Fra*_*k T 5 python unit-testing pytest
我正在编写一个 pytest 插件来在运行它们之前对您的测试进行排序。我想要一种更好的方法来为我的插件编写测试。
我正在使用 pytest 的pytest_collection_modifyitems hook,然后items根据某些标记就地修改。测试这个最简单的方法是有一个 pytest 测试的输入列表,将它们传递给我的函数,并断言输出的顺序正确。
我在收集或创建输入测试列表时遇到问题。输入测试的格式应该与 pytest 传递items给pytest_collection_modifyitems钩子的格式相同,即它们应该是_pytest.python.Function定义了适当标记的实例。
我将接受以下任一答案:1) 收集给定现有 Python 模块的测试,或 2) 以编程方式创建_pytest.python.Function看起来像将传递给pytest_collection_modifyitems钩子的实例。任何可以轻松生成测试数据的东西。
我建议您使用testdir固定装置采用更高级别的测试方法,这对于 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'
]
Run Code Online (Sandbox Code Playgroud)
因此,您可以轻松地在源代码中对测试及其标记进行多种排列,并通过断言输出行来断言实际的顺序。
| 归档时间: |
|
| 查看次数: |
1841 次 |
| 最近记录: |