以编程方式收集或创建测试py.tes公司

2024-06-28 11:37:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在编写一个pytest插件,以便在运行测试之前对它们进行排序。我想要一个更好的方法为我的插件编写测试。在

我使用pytest的pytest_collection_modifyitemshook,然后根据某些标记适当地修改{}。测试这一点的最简单方法是有一个pytest测试的输入列表,将它们传递给我的函数,并断言输出的顺序是正确的。在

我在收集或创建输入测试列表时遇到问题。输入测试的格式应该与pytest将作为items传递给pytest_collection_modifyitems钩子的格式相同,也就是说,它们应该是{}的实例,并定义了适当的标记。在

我将接受以下问题的答案:1)收集给定现有Python模块的测试,或2)以编程方式创建_pytest.python.Function实例,这些实例看起来像传递给pytest_collection_modifyitems钩子的内容。任何使生成测试数据变得容易的东西。在


Tags: 实例方法函数标记插件列表排序顺序
1条回答
网友
1楼 · 发布于 2024-06-28 11:37:11

我建议您使用testdirfixture进行更高级别的测试,这是pytest插件常见的,可以通过pytesterplugin获得:

pytest_plugins = "pytester"


def test_something(testdir):
    """Test some thing."""
    testdir.makepyfile("""
        import pytest

        @pytest.mark.some
        def test_some():
            assert True

        @pytest.mark.some_thing_else
        def test_some_thing_else():
            assert True
    """)
    result = testdir.runpytest('-vv')
    assert result.stdout.lines[-4:-2] == [
        u'test_something.py::test_some PASSED',
        u'test_something.py::test_some_thing_else PASSED'
    ]

因此,您可以轻松地在源代码中对测试及其标记进行多重排列,并通过断言输出行来断言实际的顺序。在

相关问题 更多 >