测试类中的Pytest参数

时间:2018-10-05 10:20:25

标签: pytest

我有以下代码试图在其中使用一些测试数据生成测试。

class Test_ABC(BaseTestCase):
    testdata = [
                (7,  'Jan', 2018, 'Jul', 2018),
                (8,  'Jan', 2018, 'Aug', 2018),
                (18, 'Jan', 2017, 'Jun', 2018),
                (36, 'Jan', 2015, 'Dec', 2017),
                (48, 'Jan', 2014, 'Dec', 2017),
               ]

    @pytest.mark.parametrize("a, b, c, d", testdata)
    def test_abc(self, a, b, c, d):
        print (a, b, c, d)

BaseTestCase的窥探器:

@pytest.mark.usefixtures('init_browser')
class BaseTestCase(unittest.TestCase):
    def __init__(self, *args, **kwargs):
        super(BaseTestCase, self).__init__(*args, **kwargs)

当我使用pytest执行此脚本时,出现以下错误:

TypeError: test_abc() missing 5 required positional arguments: 'a', 'b', 'c', 'd'
C:\Python3\lib\unittest\case.py:605: TypeError

如果我没有在测试类'Test_ABC'中继承BaseTestCase,这似乎是可行的。

您知道我的测试用例或BaseTestCase中缺少什么吗?

1 个答案:

答案 0 :(得分:1)

您在param中没有足够的参数(如错误所述)。试试这个:

@pytest.mark.parametrize("a, b, c, d, e", testdata)
def test_abc(self, a, b, c, d, e):
    print (a, b, c, d)  # without year

而且pytest也不使用__init__构造函数在类中寻求测试。删除它,并将unittest.TestCase替换为object