问答 pytest 钩子函数的返回值,在测试用例中怎么获取到,用例中想根据沟子函数的值做一些判断处理,求大佬们指教,感谢

流浪者 · 2024年08月14日 · 最后由 流浪者 回复于 2024年08月20日 · 7789 次阅读

conftest.py

@pytest.hookimpl(hookwrapper=True, tryfirst=True)
def pytest_runtest_makereport(item, call):
print('------------------------------------')

# 2. 获取钩子方法的调用结果
result = yield
print('钩子方法的执行结果', result)

# 3. 从钩子方法的调用结果中获取测试报告
report = result.get_result()

print('从结果中获取测试报告:', report)
print('从报告中获取 nodeid:', report.nodeid)
print('从报告中获取调用步骤:', report.when)
print('从报告中获取执行结果:', report.outcome)
return report # 返回 report ,测试用例中想根据 report 的值做一些处理

test_demo.py

class testDemo:
def test_01(self):
# 根据沟子函数的返回值做一些判断处理

pass

共收到 2 条回复 时间 点赞
# demo.py
import pytest


class TestCase:
    def testcase1(self,results):
        print("+++ case 1")
        print("【+】" + results['key'].nodeid)


    # def testcase2(self):
    #   print("+++ case 2")


if __name__ == '__main__':
    pytest.main(['demo.py','-v','-s'])

import pytest


makereport = {}

@pytest.hookimpl(hookwrapper=True, tryfirst=True)
def pytest_runtest_makereport(item, call):
    print('------------------------------------')

    # 2. 获取钩子方法的调用结果
    result = yield

    # 3. 从钩子方法的调用结果中获取测试报告
    report = result.get_result()

    makereport['key']=report

    print('从结果中获取测试报告:', report)
    print('从报告中获取 nodeid:', report.nodeid)
    print('从报告中获取调用步骤:', report.when)
    print('从报告中获取执行结果:', report.outcome)


@pytest.fixture(scope="session")
def results():
    yield makereport
2楼 已删除

已经验证 OK,感谢大佬指教

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册