pytest之插件pytest.hookimpl(hookwrapper=True, tryfirst=True)


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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM