Реализация пользовательского утверждения для сопоставления строк - PullRequest
0 голосов
/ 10 февраля 2020

Я реализую unittest, чтобы проверить, начинаются ли определенные строки в приложении с легального префикса. Например, в качестве тела тестовой функции у меня теперь есть:

strings_to_check = ['ID_PRIMARY','ID_FOREIGN','OBJ_NAME', 'SOMETHING_ELSE']
for s in strings_to_check:
    assert s.startswith('ID_') or\
           s.startswith('OBJ_')

Но возвращаемое AssertionError довольно многословно (реальный код имеет более допустимый параметр префикса). Я нашел this в документации, но это фокусируется на утверждении между (пользовательскими) объектами. Есть ли способ написать свою собственную функцию подтверждения, которая возвращает более удобочитаемое сообщение?

1 Ответ

1 голос
/ 10 февраля 2020

Вы можете сделать что-то вроде этого:

def test_myex1(myfixture):
    myfixture.append(1)
    strings_to_check = ['ID_PRIMARY','ID_FOREIGN','OBJ_NAME', 'SOMETHING_ELSE']
    for s in strings_to_check:
        failing_string = f'variable s: {s} does not start with valid string'
        assert s.startswith('ID_') or s.startswith('OBJ_'), failing_string

, который производит трассировку как:

>           assert s.startswith('ID_') or s.startswith('OBJ_'), failing_string
E           AssertionError: variable s: SOMETHING_ELSE does not start with valid string

raisetest.py:6: AssertionError
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...