另一种创建报告的方法是首先将结果收集为字典或数据框,然后按照您的喜好处理它(编写CSV等)。如果您希望采用这种方法,可以使用
pytest-harvest
。只需安装它,就可以直接使用预定义的固定装置:
import pytest
import time
@pytest.mark.parametrize('p', ['world', 'self'], ids=str)
def test_foo(p):
"""
A dummy test, parametrized so that it is executed twice
"""
print('\n hello, ' + p + ' !')
time.sleep(len(p) / 10)
def test_synthesis(module_results_df):
"""
Shows that the `module_results_df` fixture already contains what you need
"""
module_results_df.drop('pytest_obj', axis=1, inplace=True)
print("\n `module_results_df` dataframe:\n")
print(module_results_df)
产生收益/产量。
>>> pytest -s -v
============================= test session starts =============================
...
collecting ... collected 3 items
test_basic.py::test_foo[world]
hello, world !
PASSED
test_basic.py::test_foo[self]
hello, self !
PASSED
test_basic.py::test_synthesis
`module_results_df` dataframe:
status duration_ms p
test_id
test_foo[world] passed 500.028610 world
test_foo[self] passed 400.022745 self
PASSED
========================== 3 passed in 0.05 seconds ===========================
你也可以从 'dict' fixture 开始,其中包含有关设置/拆卸时间的更多详细信息,并使用提供的辅助方法将其转换为数据帧。
有关详细信息,请参阅文档。
最后,如果您还希望使用参数、夹具、步骤等,您可能希望查看此
数据科学基准示例。
顺便说一下,我是作者 ;)
request
对象的? 你是在pytest_runtest_logreport
中完成的吗? - malhar