可以使用pytest的鉤子攔截測試結果報告:
conftest.py
:
import pytest
@pytest.hookimpl(hookwrapper=True)
def pytest_runtest_logreport(report):
yield
# Define when you want to report:
# when=setup/call/teardown,
# fields: .failed/.passed/.skipped
if report.when == 'call' and report.failed:
# Add to the database or an issue tracker or wherever you want.
print(report.longreprtext)
print(report.sections)
print(report.capstdout)
print(report.capstderr)
同樣,你可以攔截這些鉤子一個在需要的階段注入你的代碼(在某些情況下,與嘗試,唯獨身邊yield
):
pytest_runtest_protocol(item, nextitem)
pytest_runtest_setup(item)
pytest_runtest_call(item)
pytest_runtest_teardown(item, nextitem)
pytest_runtest_makereport(item, call)
pytest_runtest_logreport(report)
瞭解更多:Writing pytest plugins
所有這一切都可以輕鬆完成要麼作爲一個簡單的安裝庫做了一個小小的插件,或者作爲一個僞插件conftest.py
,它只是l在其中一個目錄中進行測試。