pytestテスト結果のカスタムHTMLレポート用のPythonプラグインを作成しています。私はいくつかのテスト情報(いくつかのPythonオブジェクト...)をテストの中に保存したいと思います。そして、レポートを作成するときに、この情報をレポートに再利用したいと思います。これまでのところ、私はちょっとしたハックな解決策しか出てこなかった。Pytestはテストから任意の情報を渡す
私はrequest
オブジェクトを私のテストに合格させ、request.node._report_sections
の一部を自分のデータで埋めます。 このオブジェクトはTestReport.sections
属性に渡されます。フックpytest_runtest_logreport
から利用できます。最後にHTMLを生成してから、すべてのオブジェクトをsections
属性から削除します。 pseudopythoncodeで
:
def test_answer(request):
a = MyObject("Wooo")
request.node._report_sections.append(("call","myobj",a))
assert False
と
def pytest_runtest_logreport(report):
if report.when=="call":
#generate html from report.sections content
#clean report.sections list from MyObject objects
#(Which by the way contains 2-tuples, i.e. ("myobj",a))
これを行うには良いpytest方法はありますか?