首页 > 其他分享 >Allure报告 03-报告Summary

Allure报告 03-报告Summary

时间:2024-01-23 14:57:03浏览次数:32  
标签:03 allure terminalreporter -- Summary 用例 Allure print exitstatus

1. 钩子:pytest_terminal_summary

执行完测试用例后,需要对结果进行汇总,用例总数,失败用例数,成功用例数等。
pytest有自带的一个钩子函数:pytest_terminal_summary,查看官方文档。

# conftest.py

def pytest_terminal_summary(terminalreporter, exitstatus, config):
    """
    :param terminalreporter: 报告汇总
    :param exitstatus: 退出状态
    :param config: 全局 Config 对象
    :return:
    exitstatus:
        0 -- 用例全部通过
        1 -- 有用例失败
        2 -- 收集用i就失败了,还没执行
        3 -- 其他报错
        4 -- 其他报错
        5 -- 收集到0条用例
    """
    print(f'退出状态:{exitstatus}')
# test_allure_3.py

import allure
import requests
import json

class TestDemo:

    def test_x1(self):
        """输入正确的用户名和密码"""
        with allure.step('步骤1:登录前'):
            print('步骤1:登录前')
        allure.dynamic.feature('动态添加功能点1')
        print('x11111')
        allure.dynamic.title('动态添加title11')
        with allure.step('步骤2:登录后'):
            print('登录结束')


    def test_x2(self):
        """输入错误的用户名和密码"""
        with allure.step('步骤1:登录前'):
            print('步骤1:登录前')
        allure.dynamic.feature('动态添加功能点2')
        print('x222222')
        allure.dynamic.title('动态添加title22')
        with allure.step('步骤2:登录后'):
            print('登录结束')

执行:pytest -s test_allure_3.py

我们将其中一个用例断言失败,看看退出状态返回的是否是1。

2. 汇总用例数据

通过terminalreporte参数,可以获取到用例测试数据汇总。并且将测试的数据发写入到json文件中,方便其他地方进行读取。

# conftest.py

def pytest_terminal_summary(terminalreporter, exitstatus, config):
    """
    :param terminalreporter: 报告汇总
    :param exitstatus: 退出状态
    :param config: 全局 Config 对象
    :return:
    exitstatus:
        0 -- 用例全部通过
        1 -- 有用例失败
        2 -- 收集用i就失败了,还没执行
        3 -- 其他报错
        4 -- 其他报错
        5 -- 收集到0条用例
    """
    print(f'退出状态:{exitstatus}')
    total = terminalreporter._numcollected
    if total > 0:
        passed = len([i for i in terminalreporter.stats.get('passed', []) if i.when != 'teardown'])
        failed = len([i for i in terminalreporter.stats.get('failed', []) if i.when != 'teardown'])
        skipped = len([i for i in terminalreporter.stats.get('skipped', []) if i.when != 'teardown'])
        error = len([i for i in terminalreporter.stats.get('error', []) if i.when != 'teardown'])
        successful = len(terminalreporter.stats.get('passed', [])) / terminalreporter._numcollected * 100
        duration = time.time() - terminalreporter._sessionstarttime
        markdown_text = f"""### 执行结果:  
        - 运行环境: 测试环境  
        - 运行base_url: ----
        - 持续时间: {duration: .2f} 秒  

        ### 本次运行结果:  
        - 总用例数: {total}  
        - 通过用例:{passed}  
        - 跳过用例:{skipped}
        - 失败用例: {failed}  
        - 异常用例: {error}  
        - 通过率: {successful:.2f} % \n  
        """
        print(f'用例执行结果:{markdown_text}')
        with open("summary.json", 'w', encoding='utf-8') as fp:
            summary = {
                "total": total,
                "passed": passed,
                "failed": failed,
                "skipped": skipped,
                "error": error,
                "successful": f'{successful:.2f} %',
                "duration": duration
            }
            import json
            fp.write(json.dumps(summary, indent=4))
    else:
        print('未收集到测试用例')

标签:03,allure,terminalreporter,--,Summary,用例,Allure,print,exitstatus
From: https://www.cnblogs.com/dack-zt-deng/p/17982443

相关文章

  • Prometheus最佳实践 Summary和Histogram
    本文分享自华为云社区《Prometheus最佳实践Summary和Histogram》,作者:张俭。前言Histogram和Summary都是复杂的指标,不仅仅是因为直方图和summary包含了多个时间序列,而且它们还较难使用正确。观测中的Count和SumHisto和summary都是采样观测,典型的采样维度有 响应大小 和 ......
  • AWS-SAA C03 题库 —— PART04 131-200
    131.Acompanyisdevelopingafile-sharingapplicationthatwilluseanAmazonS3bucketforstorage.ThecompanywantstoserveallthefilesthroughanAmazonCloudFrontdistribution.Thecompanydoesnotwantthefilestobeaccessiblethroughdirect......
  • oracle提示错误1033,ora-1033
    oracle提示错误1033,ora-1033制造问题和解决问题 文章标签:oracle提示错误1033系统是winxp,使用Imp导入数据到用户user1的时候,关闭了cmd窗口,结果在删除user1的时候,出现了ora-1033错误。解决办法:>connect/assysdba>shutdown>startupmount>alterdatabaserecoverdataba......
  • CF1036F Relatively Prime Powers 题解
    题目分析对于一个不合法的数\(x(x\ge2)\),设\(x=\prodp_i^{r_i}\),令\(g=\gcd(r_1,r_2,\ldots,r_k)\),则\(x=\left(\prodp_i^{r_i/g}\right)^g\),所以\(x\)是一个正整数的\(g\)次方。所以可以枚举上文的\(g\),把每一类不合法方案排除掉,就是答案。设\(f(i)\)表示\(2\)......
  • 软件测试/测试开发/全日制|Pytest 结合allure生成优美的测试报告
    前言上一篇文章我们介绍了如何配置allure环境用来生成精美的测试报告,本文我们就来详细介绍一下pytest结合allure生成优美的测试报告。环境准备我们已经配置好了allure环境,下面我们需要安装生成allure报告的第三方库,allure-pytest,安装命令如下:pipinstallallure-pytest基本使用命令......
  • MetaGPT day03 MetaGPT 订阅智能体
    订阅智能体基本介绍#什么是订阅智能体MetaGPT提供了Agent的开发能力,Agent可以协助我们解决日常的一些问题,其中一个应用场景就是我们可以让Agent为我们关注某些想关注的信息,当有我们关注的事件发生时,Agent获取信息并进行处理,然后通过一些如邮件、微信、discord等通知渠道将处理......
  • G2303、G2318期末复习习题册第四章解答(课本部分)
    ......
  • G2303、G2318期末复习习题册第四章解答(习题部分)
    ......
  • luffy__03days'
    昨日回顾#1后端项目目录调整---》正常:项目名:-项目名同名文件夹-配置文件:settings.py-总路由:urls.py-wsgi.py-asgi.py-user-home-or......
  • C++U6-03-最短路算法4-floyd算法
    B站复习视频:1、https://www.bilibili.com/video/BV1Fj411d71S/?spm_id_from=333.999.0.02、https://www.bilibili.com/video/BV1RK4y1d7ct?p=1&vd_source=5c960e1ede940bc5cab8ed42c8bdc937学习目标 floyd算法Floyd算法是一种用于找到图中所有节点对之间最短路径的动态规划......