美文网首页python
pytest中的hooks函数

pytest中的hooks函数

作者: 小白兔胡萝卜 | 来源:发表于2021-12-21 20:26 被阅读0次

pytest的测试用例执行完成后,我们需要获取执行结果,以便统计测试结果,保存测试失败日志.....

常用函数:

pytest_terminal_summary、

pytest_runtest_makereport、

pytest_report_teststatus

import time

from _pytestimport terminal

from utils.logimport log

import pytest

# teardown之后运行

def pytest_terminal_summary(terminalreporter, exitstatus, config):

    # print(terminalreporter._session)

    # print(terminalreporter._showfspath)

    # print(terminalreporter.stats)

    # print(terminalreporter.startdir)

    # print(terminalreporter.report_collect(False))

    # print(exitstatus)

    # print(config)

    caseNum = terminalreporter._numcollected

    passed =len([ifor iin terminalreporter.stats.get('passed', [])if i.when !='teardown'])

    failed =len([ifor iin terminalreporter.stats.get('failed', [])if i.when !='teardown'])

    error =len([ifor iin terminalreporter.stats.get('error', [])if i.when !='teardown'])

    skipped =len([ifor iin terminalreporter.stats.get('skipped', [])if i.when !='teardown'])

    passRate = (passed / (passed + failed)) *100

    testTime = time.time() - terminalreporter._sessionstarttime

    log.info("test result - short information:\n"

                 "total cases: {}\n"

                 "passed: {}\n"

                 "failed: {}\n"

                 "error: {}\n"

                 "skipped: {}\n"

                 "pass rate: {}%\n"

                 "total times: {} seconds".format(caseNum,

                                                                  passed,

                                                                  failed,

                                                                  error,

                                                                  skipped,

                                                                  passRate,

                                                                  testTime))

# 运行用例的过程会经历三个阶段:setup-call-teardown, 每个阶段都会返回Result对象和TestReport对象以及对象属性。

# setup和teardown上面的用例默认都没有,结果都是passed。

@pytest.hookimpl(hookwrapper=True, tryfirst=True)

def pytest_runtest_makereport(item, call):

    out =yield  # 钩子函数的调用结果

    res = out.get_result()# 获取用例执行结果

    # res主要有以下属性

    # 'nodeid': 节点ID,

    # 'location': case位置,

    # 'keywords': 关键信息,

    # 'outcome': case结果, 如pass,failed...,

    # 'longrepr': case异常信息,

    # 'when': case类型,如call...,

    # 'user_properties': [],

    # 'sections': case输出日志,

    # 'duration': case时间,

    # 'extra': []

    if res.when =="call" and res.outcome =="failed":# 只获取call用例failed时的信息

        # log.info("test failed = {}".format(item))

        # log.info("exception = {}".format(call))

        log.info("makereport res = {}".format(res))

        # print(res.longrepr)

        # print(res.duration)

        # print(res.__dict__)

# 运行用例的过程会经历三个阶段:setup-call-teardown,每个阶段都会返回Result对象和TestReport对象以及对象属性。

# setup和teardown上面的用例默认都没有,结果都是passed。

# def pytest_report_teststatus(report, config):

    # report相关的属性,参考以下

    # '_from_json',

    # '_get_verbose_word',

    # '_to_json',

    # 'caplog',

    # 'capstderr',

    # 'capstdout',

    # 'count_towards_summary',

    # 'duration',

    # 'failed',

    # 'from_item_and_call',

    # 'fspath',

    # 'get_sections',

    # 'head_line',

    # 'keywords',

    # 'location',

    # 'longrepr',

    # 'longreprtext',

    # 'nodeid',

    # 'outcome',

    # 'passed',

    # 'sections',

    # 'skipped',

    # 'toterminal',

    # 'user_properties',

    # 'when'

    # if report.when == "call" and report.outcome == "failed":

    #    log.info("teststatus res = {}".format(report))

相关文章

  • pytest中的hooks函数

    pytest的测试用例执行完成后,我们需要获取执行结果,以便统计测试结果,保存测试失败日志..... 常用函数: ...

  • Pytest学习-通过hooks函数(pytest_runtes

    Pytest中提供了很多钩子函数,可以方便我们基于此进行二次开发,另外通过对Pytest钩子函数的学习,我们也能够...

  • React(五)深入React-Hooks工作机制,原理

    1.原则:只在React函数中调用Hooks;不要在循环、条件或嵌套函数中调用Hook,确保Hooks在每次渲染时...

  • python3 pytest (2) - hooks

    前言 pytest运行的整个过程中, 充满了各种Hook函数 覆写Hook函数虽然无法改变pytest的执行流程,...

  • 8.Hook对传统react编程的影响

    1.生命周期函数如何映射到Hooks? 2.类实例成员如何映射到hooks? 3、hooks中如何获取历史prop...

  • React Hooks的使用限制

    React Hooks的使用限制 只能用于函数组件或自定义Hooks中 不能写在条件语句中 不能写在函数组件或自定...

  • React Hooks

    React Hooks Hooks其实就是有状态的函数式组件。 React Hooks让React的成本降低了很多...

  • 笔记3:pytest配置文件

    pytest运行方式: 1、在主函数中执行:,pytest.main('-s 文件名称') 2、命令行执行:在测试...

  • React Hooks - 学习笔记

    React Hooks Hook 是能让你在函数组件中“钩入” React 特性的函数。 State Hook u...

  • useState和useEffect

    Hooks Hooks是React16.8.0版本推出的api,用来解决函数组件中功能不足的问题 组件:无状态组件...

网友评论

    本文标题:pytest中的hooks函数

    本文链接:https://www.haomeiwen.com/subject/zvtfqrtx.html