gpt4 book ai didi

parameterized - py.test 在特定的 testSuite 中运行测试

转载 作者:行者123 更新时间:2023-12-04 16:45:40 26 4
gpt4 key购买 nike

我是 py.test 的新手。到目前为止,我喜欢我所看到的并希望将其集成到我们的 CI 过程中。

目前我们在测试中使用了一种不同的参数化方案,我将简要解释一下:

  • 我们不是对每个测试进行参数化,而是对每个类进行参数化
  • params是一组元组,每个元组代表不同的参数集。
  • 我们为每个这样的图普拉创建了一些 TestCaseWithParameters 的不同实例这是一个 unittest.TestCase类(class)。像这样:

  •     for test_parameters in params:
    parameterized_test_suite.addTest(ParametrizedTestCase.parametrize(TestCaseWithParameters,param=test_parameters))

  • 这些类中的每一个都注入(inject)了 self.params并使用这些不同的参数运行所有测试功能。
  • 这意味着如果我们在 params 中有数百个元组和 TestSomethingWithParameters有几十个测试,总共有很多测试。

  • 我的问题:我将如何将其翻译为 py.test?

    我已阅读 this关于 pytest_generate_tests 的文章钩子(Hook),但它似乎为每个测试函数注入(inject)了依赖项,我每个测试用例都需要它......

    最简单的方法是告诉 py.test 运行特定的 parameterized_tes_suite我已经创建了,但我没有找到这样做的方法......

    另一种方法是在 TestCase 类级别进行类似的依赖注入(inject),但我也没有找到这样做的方法。

    最佳答案

    您可以使用 @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有关这方面的更多信息。

    关于parameterized - py.test 在特定的 testSuite 中运行测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15120820/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com