【发布时间】:2020-11-06 05:46:04
【问题描述】:
我想知道如何在 pytest 中迭代 test_funtion() 以获得不同的值? 例如。
list = ['ls','ps', 'df' ,'du'] #list of Linux commands
def test_method(self):
for I in list:
r=subprocess.check_output(I)
if r:
assert True
else:
assert False
现在当我运行 pytest -k test_method 时, 它显示我只通过了一个测试用例。 但我希望所有 4 个案例都使用单个函数运行,并且需要在输出中传递 4 个测试用例。 我怎样才能实现它?
【问题讨论】:
-
不要迭代函数,迭代函数内部的这个值。我的意思是,在测试函数内的列表的所有值上运行你的函数,虽然不是一个理想的事情
-
好的,这样做我只获得了一个整体通过的测试用例,但我有多个值。那么在这种情况下是否有像 4 个测试用例一样的输出?
-
你可以,但这不是你应该做的单元测试。您的单元测试应该相互排斥。如果您的测试的所有值都有其他含义,您应该为每个值编写单独的测试。
-
对,但测试方法在所有 4 个测试用例中都很常见,所以我不想让它变得多余,不像它应该对多个命令使用单个函数。为同一个测试方法编写多个函数不是一个好主意。
-
那你为什么要测试 4 种不同的输入?如果它很常见并且测试通过了一个输入,那么就没有必要为不同的输入测试相同的测试
标签: python linux integration-testing pytest python-unittest