我是py.test的新手。到目前为止,我喜欢我所看到的并希望将其集成到我们的CI流程中。
目前我们为测试使用了不同类型的参数化方案,我将简要解释一下:
params
是元组中的一个元组,每个元组代表不同的参数集。TestCaseWithParameters
的{{1}}类的不同实例。这样的事情:unittest.TestCase
for test_parameters in params:
parameterized_test_suite.addTest(ParametrizedTestCase.parametrize(TestCaseWithParameters,param=test_parameters))
并运行所有测试,并使用这些不同的参数。self.params
和params
中有数百个元组有几十个测试,那么总共有很多测试。我的问题:我如何将其翻译成py.test?
我已经阅读了有关TestSomethingWithParameters
挂钩的this文章,但似乎它为每个测试函数注入依赖项,我需要每个TestCase ...
最简单的方法是告诉py.test运行我已创建的特定pytest_generate_tests
,但我找不到办法这样做......
另一种方法是在TestCase类级别执行类似的依赖注入,但我还没有找到办法。
答案 0 :(得分:2)
您可以使用@pytest.mark.parametrize
标记轻松地对整个类进行参数化:
import pytest
@pytest.mark.parametrize('n', [0, 1])
class TestFoo:
def test_42(self, n):
assert n == 42
def test_7(self, n):
assert n == 7
有关如何传递多个参数等的详细信息,请参阅documentation on the parameterize marker。另请参阅apply markers to classes and modules了解有关此问题的详细信息。