1、該插件作用於pytest的鈎子函數上,可以獲取到測試用例不同執行階段的結果(setup,call,teardown)
2、可以獲取鈎子方法的調用結果(返回一個result對象)和調用結果的測試報告(返回一個report對象)
@pytest.hookimpl(hookwrapper=True, tryfirst=True) def pytest_runtest_makereport(item, call): """
每個測試用例執行后,制作測試報告
:param item:測試用例對象
:param call:測試用例的測試步驟
先執行when=’setup’ 返回setup 的執行結果
然后執行when=’call’ 返回call 的執行結果
最后執行when=’teardown’返回teardown 的執行結果
:return:
"""
# 獲取鈎子方法的調用結果,返回一個result對象
out = yield
# # 獲取調用結果的測試報告,返回一個report對象, reportd對象的屬性包括when(steup, call, teardown三個值)、nodeid(測試用例的名字)、outcome(用例的執行結果,passed,failed)
report = out.get_result()
print(out)
print(report)
print(report.when)
print(report.nodeid)
print(report.outcome)
運行結果:執行三次的原因是此鈎子函數會在測試用例執行的不同階段(setup, call, teardown)都會調用一次
testcase/test_getRegionCountry/test_GetRegionCountry.py::test_getRightrequest <pluggy.callers._Result object at 0x0000000004B7D828> <TestReport 'testcase/test_getRegionCountry/test_GetRegionCountry.py::test_getRightrequest' when='setup' outcome='passed'> setup testcase/test_getRegionCountry/test_GetRegionCountry.py::test_getRightrequest passed <pluggy.callers._Result object at 0x0000000002FAA748> <TestReport 'testcase/test_getRegionCountry/test_GetRegionCountry.py::test_getRightrequest' when='call' outcome='passed'> call testcase/test_getRegionCountry/test_GetRegionCountry.py::test_getRightrequest passed PASSED<pluggy.callers._Result object at 0x000000000303F5F8> <TestReport 'testcase/test_getRegionCountry/test_GetRegionCountry.py::test_getRightrequest' when='teardown' outcome='passed'> teardown testcase/test_getRegionCountry/test_GetRegionCountry.py::test_getRightrequest passed