我可能會對以我不應該使用的方式使用 pytest 感到內疚,但假設我想在成功完成測驗時生成并顯示一些短訊息。就像我正在開發一種壓縮演算法,而不是“PASSED”,我希望看到“SQUEEZED BY 65.43%”或類似的東西。這甚至可能嗎?我應該從哪里開始定制,或者可能有一個我可以使用的插件?
我偶然發現了pytest-custom-report,但它只提供靜態訊息,這些訊息是在測驗運行之前設定的。那不是我需要的。
uj5u.com熱心網友回復:
我可能會對以一種我不應該的方式使用 pytest 感到內疚
完全不是 - 這正是pytest插件系統應該解決的用例型別。
回答您的實際問題:尚不清楚百分比值的來源。假設它是由函式回傳的squeeze(),我首先將百分比存盤在測驗中,例如使用record_property夾具:
from mylib import squeeze
def test_spam(record_property):
value = squeeze()
record_property('x', value)
...
要顯示存盤的百分比值,請在專案或測驗根目錄pytest_report_teststatus中的 aconftest.py中添加自定義hookimpl :
# conftest.py
def pytest_report_teststatus(report, config):
if report.when == 'call' and report.passed:
percentage = dict(report.user_properties).get('x', float("nan"))
short_outcome = f'{percentage * 100}%'
long_outcome = f'SQUEEZED BY {percentage * 100}%'
return report.outcome, short_outcome, long_outcome
現在test_spam在默認輸出模式下運行會產生
test_spam.py 10.0% [100%]
以詳細模式運行
test_spam.py::test_spam SQUEEZED BY 10.0% [100%]
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/316777.html
