python: Как я могу написать тест для этой функции? - PullRequest
0 голосов
/ 22 марта 2020

У меня есть функция и часть тестирования.

часть тестирования, но я получаю такую ​​ошибку, как ее исправить, нужно ли использовать приведение типов?

TypeError: unsupported operand type(s) for -: 'str' and 'str'

Например, у меня есть в моем файле aa-bb- cc. Это означает, что у меня есть 3 поля, и если я хочу получить значение true, мне нужно передать fields_number = 3

1 Ответ

2 голосов
/ 22 марта 2020

Посмотрите на первый аргумент, который вы передаете декоратору - 'file_name, fields_number=None, sep='-', expected_result'.

Из-за '-' это выглядит как вычитание 2 строк: 'file_name, fields_number=None, sep=' и ', expected_result'. Не уверен, что вам нужно включать значения по умолчанию, но если вы используете двойные кавычки, а не одиночные кавычки вокруг строки, в которой есть одинарные кавычки.

РЕДАКТИРОВАТЬ: Это должно работать:

@pytest.mark.parametrize('file_name, fields_number, sep, expected_result',
                         [('file_prog', 5, '-', True),
                          ('file_prog', None ,'-', False)])
def test_func(file_name, fields_name, sep, expected_result):
    result = func(file_name=file_name, fields_number=fields_number, sep=sep)
    assert result == expected_result

Вы можете заменить первый аргумент декоратора списком:

['file_name', 'fields_number', 'sep', 'expected_result']

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