python:如何为该功能编写测试?

时间:2020-03-22 13:00:18

标签: python testing pytest typeerror

我有功能和测试部分。

测试部分, 但是我遇到这种错误,该如何解决,我需要使用类型转换吗?

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

例如,我的文件中有aa-bb-cc。这意味着我有3个字段,如果我想得到正确的话,我需要传递fields_number = 3

1 个答案:

答案 0 :(得分:2)

看看您传递给装饰器的第一个参数-'file_name, fields_number=None, sep='-', expected_result'

由于'-'似乎减去了两个字符串:'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']