Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python “;间接夹具&x201D;使用pytest时出错。怎么了?_Python_Python 3.x_Pytest_Python 3.7 - Fatal编程技术网

Python “;间接夹具&x201D;使用pytest时出错。怎么了?

Python “;间接夹具&x201D;使用pytest时出错。怎么了?,python,python-3.x,pytest,python-3.7,Python,Python 3.x,Pytest,Python 3.7,我不知道为什么会有“间接固定装置”,知道吗? 我正在使用python 3.7和windows 10 64位。TL;DR- 问题出在线路上 @pytest.mark.parametrize(“entrada”,“esperado”,“[…])) 应将其写入逗号分隔的字符串: @pytest.mark.parametrize(“entrada,esperado,[…])) 您获得了间接夹具,因为pytest无法解压缩给定的argvalues,因为它获得了错误的argnames参数。您需要确保所

我不知道为什么会有“间接固定装置”,知道吗? 我正在使用python 3.7和windows 10 64位。

TL;DR-
问题出在线路上

@pytest.mark.parametrize(“entrada”,“esperado”,“[…]))
应将其写入逗号分隔的字符串:

@pytest.mark.parametrize(“entrada,esperado,[…]))

您获得了
间接夹具
,因为pytest无法解压缩给定的
argvalues
,因为它获得了错误的
argnames
参数。您需要确保所有参数都写入一个字符串

请参阅:

内置pytest.mark.Parameterize装饰器可以对测试函数的参数进行参数化

参数:
1.argnames–一个逗号分隔的字符串,表示一个或多个参数名称,或参数字符串的列表/元组。
2.argvalues–argvalues列表确定调用测试的频率 使用不同的参数值

也就是说,您应该将要参数化的参数编写为单个字符串,并使用逗号分隔它们。因此,您的测试应该如下所示:

@pytest.mark.parametrize(“n,预期”[
(0, 1),
(1, 1),
(2, 2),
(3, 6),
(4, 24),
(5, 120)
])
def测试因数(n,预期):
断言阶乘(n)=应为

对于出于与我相同的原因来到这里的任何其他人,如果您使用ID列表标记测试,则ID列表必须是一个命名参数,如下所示:

 ERROR collecting Fatorial_pytest.py ____________________________________________________________________
In testa_fatorial: indirect fixture '(0, 1)' doesn't exist
而不是

@pytest.mark.parametrize("arg1, arg2", paramlist, ids=param_ids)

有人能猜出这个令人难以置信的误导性错误的来源吗?
@pytest.mark.parametrize("arg1, arg2", paramlist, ids=param_ids)
@pytest.mark.parametrize("arg1, arg2", paramlist, param_ids)