gpt4 book ai didi

python - 使用 py.test 以编程方式收集或创建测试

转载 作者:太空宇宙 更新时间:2023-11-03 11:04:55 25 4
gpt4 key购买 nike

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

我正在使用 pytest 的 pytest_collection_modifyitems hook ,然后根据某些标记就地修改 items。对此进行测试的最简单方法是获取 pytest 测试的输入列表,将它们传递给我的函数,并断言输出顺序正确。

我在收集或创建输入测试列表时遇到问题。输入测试的格式应与 pytest 将作为 items 传递给 pytest_collection_modifyitems Hook 的格式相同,即它们应该是 _pytest.python.Function< 的实例 定义了适当的标记。

我将接受以下任一答案:1) 收集给定现有 Python 模块的测试,或 2) 以编程方式创建 _pytest.python.Function 实例,看起来像将传递给 的实例pytest_collection_modifyitems Hook 。任何可以轻松生成测试数据的东西。

最佳答案

我建议您使用 testdir fixture 进行更高级别的测试方法,这对于 pytest 插件很常见,可通过 pytester 插件获得:

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'
]

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

关于python - 使用 py.test 以编程方式收集或创建测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22597684/

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