首页 > 编程语言 >【python自动化三】allure测试报告优化

【python自动化三】allure测试报告优化

时间:2024-12-05 11:29:48浏览次数:5  
标签:tmp 测试报告 python testcase 用例 allure report

前文中讲了如何集成allure测试报告,但生成的测试报告比较简单
在这里插入图片描述
在这里插入图片描述

可以看到无论是主页还是具体用例页面,内容都比较少,无法看到更具体的内容,这里我们丰富一下测试报告

1.添加allure相关的装饰器

装饰器说明
@allure.epic()场景范围,直译为史诗,就是一个比较大的场景范围
@allure.feature()特性,epic往下一个层级的场景范围
@allure.story()故事,feature下一层级的场景范围
@allure.title()用例标题,使用这个装饰器可以在生成测试报告时重命名用例的标题
@allure.description()测试用例的描述
@allure.tag()测试用例的tag
@allure.severity()测试用例的等级,枚举值有BLOCKER、CRITICAL、NORMAL、MINOR、TRIVIAL
@allure.label()用例label
@allure.link()添加链接
@allure.issue()用例的issue
@allure.testcase()对应的用例链接
@allure.step()用例里面具体的步骤
@allure.attach()用例关联的附件

我们可以在一个类里面添加这些装饰器查看下效果
在这里插入图片描述
这是报告页面,可以看到整个类和方法的层级按照我们写的feature和story划分,用例标题也被重写,用例内容也有description,link和step
在这里插入图片描述
我们看到test_2的报告,上面在test_2中写了一个assert错误,测试报告中就能显示是在测试步骤2有报错,而且我们可以看到@testcase和@link的内容都添加到Links模块中去了
在这里插入图片描述
添加这些装饰器,可以让我们的测试报告更加丰富,定位问题更迅速,维护用例更方便,我们可以根据需要添加不同的装饰器

注:这里可以继续添加日志和附件(例如失败截图),这个在后续的接口和UI自动化中会具体体现

2.增加trends分析

目前生成测试报告都是把前一次的数据删除生成新的,导致无历史数据保留,有时我们需要分析下自动化通过率的走势,这个时候就要保存历史数据了。具体操作如下:
1.首先生成第一次报告
在这里插入图片描述
2.执行第二次任务,重新生成报告数据,注意是数据,不是报告在这里插入图片描述
即tmp目录下的数据重新生成,这时上方的allure-report还是上次生成的报告,里面有一个history的文件夹
在这里插入图片描述
3.将这个文件夹拷贝到tmp文件夹下面
在这里插入图片描述
4.重新生成测试报告

 allure generate report\tmp -c -o report\allure-report
 allure open report\allure-report

在这里插入图片描述

可以看到生成的报告已有历史数据,生成了趋势图
在这里插入图片描述
上面这些步骤也可以直接写在一个bat脚本里,我们执行自动化工程时,直接调用这个脚本就能生成测试报告了,就不用再手动执行这么多命令(linux里可以写个shell脚本)。
这里我简单写了个脚本,可以自动把历史数据复制过去,并生成测试报告。
在这里插入图片描述
bat脚本附在这里,有需要可添加或修改使用

@echo off
echo start to generate report
IF EXIST ./report/allure-report/history (
    echo history exist
    IF EXIST ./report/tmp (
        echo report data folder exist
        xcopy .\report\allure-report\history .\report\tmp\history /s /e /i /y
        echo generate report
        allure generate report\tmp -c -o report\allure-report
    ) ELSE (
        echo report data folder not exist, please pytest first
        pause
    )
 ) ELSE (
    echo report history not exist, start to generate report
    allure generate report\tmp -c -o report\allure-report
)

重新打开测试报告,可以看到趋势图增加了一次数据
在这里插入图片描述

3.其它

我们还可以添加一些其他信息,比如说环境信息,这个就结合具体的业务环境进行添加了,后续我们再补充。。。

问题记录

1.集成allure后,执行整个工程,会报找不到testcase方法中的url参数的报错,具体报错如下
file E:\project\autotest1.venv\Lib\site-packages\allure_commons_allure.py, line 85
def testcase(url, name=None):
E fixture ‘url’ not found
available fixtures: cache, capfd, capfdbinary, caplog, capsys, capsysbinary, doctest_namespace, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory
use ‘pytest --fixtures [testpath]’ for help on them.
在这里插入图片描述

原因:默认情况下pytest会执行所有以test开头的测试方法,而testcase方法又被引入到测试文件中,所以pytest将testcase方法也识别成测试方法,这时候方法中的url参数就被识别成fixture方法了(这个我们在前面介绍过fixture方法的使用),这样就会因为找不到url方法而报错,这个如何解决呢,就是我们定义一下测试方法的命名规范
在这里插入图片描述
在pytest.ini中定义测试方法是以test_开头的,这样就匹配不到testcase方法了。
当然还有一种方法,就是按需导入,我不导入testcase的方法就好了。
在这里插入图片描述
有时为了书写方便,我一般都是全量导入。

标签:tmp,测试报告,python,testcase,用例,allure,report
From: https://blog.csdn.net/evelol7/article/details/144224132

相关文章

  • 在 docker 容器中运行 python 程序,报错:"RuntimeError: can't start new thread"
    具体报错信息如下所示:Traceback(mostrecentcalllast):File"/usr/local/lib/python3.12/site-packages/uvicorn/protocols/http/h11_impl.py",line406,inrun_asgiresult=awaitapp(#type:ignore[func-returns-value]^^^^^^^^^^^^^^^^^^......
  • Python入门:从零基础到精通的详细教程(0广告,纯干货)
    前言:在信息技术飞速发展的今天,掌握编程语言的运维工程师与那些尚未涉足编程领域的运维工程师,仿佛生活在两个截然不同的世界。本博主深感这一鸿沟之深远,因此决定倾力打造一系列详尽至极的Python从零到精通教程,旨在帮助更多运维人员跨越这一技术壁垒。本系列教程将分为三大阶......
  • 深入理解Python中的装饰器
    前言作为一名程序员,我们常常会遇到需要重复使用的代码段。为了提高代码的可读性和重用性,Python引入了装饰器(Decorator)这一强大的工具。装饰器可以在不修改函数源代码的情况下,为函数添加新的功能。本文将详细讲解Python中装饰器的使用方法及其实现原理。什么是装饰器?装饰......
  • 【最新原创毕设】基于SpringBoot的网上报修平台+94800(免费领源码)可做计算机毕业设计JA
    摘要随着信息技术的快速发展和普及,高校宿舍管理面临着诸多挑战与机遇。传统的宿舍管理模式,如手工记录报修信息、纸质文档管理等,已无法满足现代高校对效率和便捷性的需求。因此,开发一套高效、智能的网上报修平台显得尤为重要。基于springBoot的网上报修平台的设计和实现正......
  • python带翻页blbl视频爬虫程序代码QZQ
    importsubprocessdefdownload_bilibili_video(video_url):try:#使用you-get下载视频,-o指定输出目录(这里是当前目录)subprocess.run([‘you-get’,‘-o’,‘.’,video_url],check=True)print(“视频下载成功!”)exceptsubprocess.CalledProcessErrorase:print......
  • centos7 python3.9.10 报错 No module named _ssl
    配置openssltar-zxvfopenssl-1.1.1w.tar.gzcdopenssl-1.1.1w/./config--prefix=/usr/local/openssl--openssldir=/usr/local/opensslmakemakeinstallmv/usr/bin/openssl/usr/bin/openssl_backupln-s/usr/local/openssl/bin/openssl/usr/bin/opensslln-s/......
  • Python 编程入门教程
    Python是一种广泛使用的高级编程语言,以其代码的可读性、简洁性和强大的库支持而闻名。Python的设计哲学强调代码的可读性和简单性,这使得它成为初学者和专业人士学习编程的理想选择。Python应用广泛,从网站开发到数据科学、人工智能、自动化脚本等,几乎涵盖了所有编程领域。Py......
  • Python 中文编码
    如何用Python输出 "Hello,World!",英文没有问题,但是如果你输出中文字符 "你好,世界" 就有可能会碰到中文编码问题。Python文件中如果未指定编码,在执行过程会出现报错:#!/usr/bin/pythonprint("你好,世界")以上程序执行输出结果为:File"test.py",line2SyntaxErro......
  • Python全栈之旅:从零基础到精通的详细教程系列开启进阶之路
    前言:在信息技术飞速发展的今天,掌握编程语言的运维工程师与那些尚未涉足编程领域的运维工程师,仿佛生活在两个截然不同的世界。本博主深感这一鸿沟之深远,因此决定倾力打造一系列详尽至极的Python从零到精通教程,旨在帮助更多运维人员跨越这一技术壁垒。本系列教程将分为三大阶段,每个......
  • Python Web 开发:FastAPI 依赖注入与中间件应用
    PythonWeb开发:FastAPI依赖注入与中间件应用目录......