Написание собственного метода fail (), расширяющего Python unittest - PullRequest
0 голосов
/ 07 декабря 2018

У меня есть специальная специализация класса Python unittest.TestCase, которая включает автоматическое ведение журнала и предоставляет настраиваемые методы проверки бизнеса для использования в большом количестве вариаций пользовательских сценариев тестирования.

Мне нужна специальная версияUnittest.TestCase.fail (...) Python, который может работать с той же строкой сообщения, что и регистратор, а не с форматером.

Я хочу избежать необходимости определять две версии моей строки сообщения следующим образом:

def verifySomething(self, p_one:str, p_two:str):

    if self.someClass.some_command():
        self.test_result = TestResult.PASSED
        message = "my custom message : %s and %s - %s"
        self.logger.info(message, p_one, p_two, self.test_result)
    else:
        self.test_result = TestResult.FAILED
        message = "my custom message : {} and {} - {}".format(p_one, p_two, self.test_result)
        self.fail(message)

... и вместо этого сделайте что-то подобное,

def verifySomething(self, p_one:str, p_two:str):
    message = "my custom message : %s and %s - %s"

    if self.someClass.some_command():
        self.test_result = TestResult.PASSED
        self.logger.info(message, p_one, p_two, self.test_result)
    else:
        self.test_result = TestResult.FAILED
        self.fail(message, p_one, p_two, self.test_result)

Примечание : это упрощенный пример, и я пропустил Pre & PostУсловия для краткости.

Сводка : Как написать пользовательскую функцию сбоя, которая переопределяет Python для unittest.TestCase.fail (...), чтобы сделать это?

1 Ответ

0 голосов
/ 14 декабря 2018

Я бы просто предварительно отформатировал сообщение:

def verifySomething(self, p_one:str, p_two:str):

    if self.someClass.some_command():
        self.test_result = TestResult.PASSED
        display_func = self.logger.info
    else:
        self.test_result = TestResult.FAILED
        display_func = self.fail

    message = "my custom message: {} and {} - {}".format(p_one, p_two, self.test_result)
    display_func(message)

Нет никаких требований, чтобы вы воспользовались возможностью self.logger.info составить для вас окончательную строку.

...