テストでrecord_xml_property fixtureを積極的に使用していますが、残念ながらxdsitプラグインでは機能しません。私は回避策を実装しようとしました。代わりに、直接、私はslaveoutputにそれらを入れて、記者にプロパティを追加:xdistでrecord_xml_propertyが動作しない
@pytest.fixture
def record_xml_property(request):
xml = getattr(request.config, "_xml", None)
if xml is not None:
node_reporter = xml.node_reporter(request.node.nodeid)
return node_reporter.add_property
else:
def add_property_xdist(name, value):
request.node.config.slaveoutput.update({'properties': {name: value}})
return add_property_xdist
その後、私はpytest_runtest_logreport
フックでレポートにこのプロパティを追加したい:
@pytest.hookimpl(tryfirst=True)
def pytest_runtest_logreport(report):
if report.when != 'teardown':
return
node = getattr(report, 'node', None)
if not node:
return
xml = getattr(node.config, '_xml', None)
if not xml:
return
node_reporter = xml.node_reporter(report)
slaveoutput = getattr(node, 'slaveoutput', None)
if not slaveoutput:
return
node_properties = slaveoutput.get('properties', {})
for key, value in node_properties.items():
node_reporter.add_property(key, value)
しかし、問題はありますそのスレーブ出力はSlaveController
オブジェクトではまだ利用できません。pytest_runtest_logreport
フックが実行されているときです。 pytest_testnodedown
で利用可能で、SlaveInteractor
が"slavefinished"
イベントで送信しますが、この時点でレポートは既に確定済みです。以前にスレーブノードからスレーブ出力を取得する方法はありますか?