我有以下代码试图在其中使用一些测试数据生成测试。
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中缺少什么吗?
答案 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