手把手教你Pytest+Allure2.X定制报告详细教程,给自己的项目量身打造一套测试报告-02(非常详细)

news2024/9/21 8:00:48

简介

俗话说“人靠衣服马靠鞍”一个项目做的在好,没有一分的漂亮的测试报告有时候也是很难在客户那边验收的,今天就带你们解决这一难题。

前边一篇文章是分享如何搭建pytest+Allure的环境,从而生成一份精美的、让人耳目一新的测试报告,但是有的小伙伴或者童鞋们可能会问,我能不能按照自己的想法为我的项目测试结果量身打造一份属于我自己的测试报告了,当然可以了。

Allure常用注解

Allure提供了以下常用注解(未列出部分请访问官网了解),具体用法如下。

Feature: 标注主要功能模块
Story: 标注Features功能模块下的分支功能
Severity: 标注测试用例的重要级别
Step: 标注测试用例的重要步骤
Issue和TestCase: 标注Issue、Case,可加入URL

1、Features定制详解

(1)代码实现

 (2)参考代码

# coding=utf-8
# 1.先设置编码,utf-8可支持中英文,如上,一般放在第一行

# 2.注释:包括记录创建时间,创建人,项目名称。
'''
Created on 2019-9-30
@author: 潇潇说测试
Project:手把手教你Pytest+Allure2.X定制报告详细教程,给自己的项目量身打造一套测试报告
'''
# 3.导入模块
import allure
import pytest


@allure.feature('test_module_01')
def test_case_01():
    """
    用例描述:Test case 01
    """
    assert 0


@allure.feature('test_module_02')
def test_case_02():
    """
    用例描述:Test case 02
    """
    assert 0 == 0


if __name__ == '__main__':
    pytest.main(['-s', '-q', '--alluredir', './report'])

(3)添加feature,Report展示见下图。

2、Story定制详解

(1)代码实现

 (2)参考代码

# coding=utf-8
# 1.先设置编码,utf-8可支持中英文,如上,一般放在第一行

# 2.注释:包括记录创建时间,创建人,项目名称。
'''
Created on 2019-9-29
@author: 潇潇说测试
Project:手把手教你Pytest+Allure2.X定制报告详细教程,给自己的项目量身打造一套测试报告
'''
# 3.导入模块
import allure
import pytest


@allure.feature('test_module_01')
@allure.story('test_story_01')
def test_case_01():
    """
    用例描述:Test case 01
    """
    assert 0


@allure.feature('test_module_02')
@allure.story('test_story_02')
def test_case_02():
    """
    用例描述:Test case 02
    """
    assert 0 == 0


if __name__ == '__main__':
    pytest.main(['-s', '-q', '--alluredir', './report'])

(3)添加story,Report展示见下图。

3、用例标题和用例描述定制详解

(1)代码实现

 (2)参考代码

# coding=utf-8
# 1.先设置编码,utf-8可支持中英文,如上,一般放在第一行

# 2.注释:包括记录创建时间,创建人,项目名称。
'''
Created on 2019-9-29
@author:潇潇说测试
Project:手把手教你Pytest+Allure2.X定制报告详细教程,给自己的项目量身打造一套测试报告
'''
# 3.导入模块
import allure
import pytest

@allure.feature('test_module_01')
@allure.story('test_story_01')
#test_case_01为用例title
def test_case_01():
    """
    用例描述:这是用例描述,Test case 01,描述本人
    """
    #注释为用例描述
    assert 0



if __name__ == '__main__':
    pytest.main(['-s', '-q', '--alluredir', './report'])

(3)添加用例标题和用例描述,Report展示见下图。

 4 、Severity定制详解

Allure中对严重级别的定义:
1、 Blocker级别:中断缺陷(客户端程序无响应,无法执行下一步操作)
2、 Critical级别:临界缺陷( 功能点缺失)
3、 Normal级别:普通缺陷(数值计算错误)
4、 Minor级别:次要缺陷(界面错误与UI需求不符)
5、 Trivial级别:轻微缺陷(必输项无提示,或者提示不规范)

(1)代码实现

 (2)参考代码

# coding=utf-8
# 1.先设置编码,utf-8可支持中英文,如上,一般放在第一行

# 2.注释:包括记录创建时间,创建人,项目名称。
'''
Created on 2019-9-29
@author:潇潇说测试
Project:手把手教你Pytest+Allure2.X定制报告详细教程,给自己的项目量身打造一套测试报告
'''
# 3.导入模块
import allure
import pytest


@allure.feature('test_module_01')
@allure.story('test_story_01')
@allure.severity('blocker')
def test_case_01():
    """
    用例描述:Test case 01
    """
    assert 0

@allure.feature('test_module_01')
@allure.story('test_story_01')
@allure.severity('critical')
def test_case_02():
    """
    用例描述:Test case 02
    """
    assert 0 == 0

@allure.feature('test_module_01')
@allure.story('test_story_02')
@allure.severity('normal')
def test_case_03():
    """
    用例描述:Test case 03
    """
    assert 0

@allure.feature('test_module_01')
@allure.story('test_story_02')
@allure.severity('minor')
def test_case_04():
    """
    用例描述:Test case 04
    """
    assert 0 == 0


if __name__ == '__main__':
    pytest.main(['-s', '-q', '--alluredir', './report'])

(3)添加Severity,Report展示见下图。

 5、Step定制详解

(1)代码实现

 (2)参考代码

# coding=utf-8
# 1.先设置编码,utf-8可支持中英文,如上,一般放在第一行

# 2.注释:包括记录创建时间,创建人,项目名称。
'''
Created on 2019-9-29
@author: 潇潇说测试
Project:手把手教你Pytest+Allure2.X定制报告详细教程,给自己的项目量身打造一套测试报告
'''
# 3.导入模块
import allure
import pytest

@allure.step("字符串相加:{0},{1}")     
# 测试步骤,可通过format机制自动获取函数参数
def str_add(str1, str2):
    if not isinstance(str1, str):
        return "%s is not a string" % str1
    if not isinstance(str2, str):
        return "%s is not a string" % str2
    return str1 + str2

@allure.feature('test_module_01')
@allure.story('test_story_01')
@allure.severity('blocker')
def test_case():
    str1 = 'hello'
    str2 = '潇潇'
    assert str_add(str1, str2) == 'hello潇潇'


if __name__ == '__main__':
    pytest.main(['-s', '-q', '--alluredir', './report'])

(3)添加Step,Report展示见下图。

6、Issue和TestCase定制详解

(1)代码实现

 (2)参考代码

# coding=utf-8
# 1.先设置编码,utf-8可支持中英文,如上,一般放在第一行

# 2.注释:包括记录创建时间,创建人,项目名称。
'''
Created on 2019-9-29
@author: 潇潇说测试
Project:手把手教你Pytest+Allure2.X定制报告详细教程,给自己的项目量身打造一套测试报告
'''
# 3.导入模块
import allure
import pytest


@allure.step("字符串相加:{0},{1}")     # 测试步骤,可通过format机制自动获取函数参数
def str_add(str1, str2):
    print('hello')
    if not isinstance(str1, str):
        return "%s is not a string" % str1
    if not isinstance(str2, str):
        return "%s is not a string" % str2
    return str1 + str2

@allure.feature('test_module_01')
@allure.story('test_story_01')
@allure.severity('blocker')
@allure.issue("http://www.baidu.com")
@allure.testcase("http://www.testlink.com")
def test_case():
    str1 = 'hello'
    str2 = '潇潇'
    assert str_add(str1, str2) == 'hello潇潇'


if __name__ == '__main__':
    pytest.main(['-s', '-q', '--alluredir', './report'])

(3)添加Issue和TestCase,Report展示见下图。

 7、attach定制详解

(1)代码实现

 (2)参考代码

# coding=utf-8
# 1.先设置编码,utf-8可支持中英文,如上,一般放在第一行

# 2.注释:包括记录创建时间,创建人,项目名称。
'''
Created on 2019-9-29
@author: 潇潇说测试
Project:手把手教你Pytest+Allure2.X定制报告详细教程,给自己的项目量身打造一套测试报告
'''
# 3.导入模块
import allure
import pytest

# file = open('C:\\Users\\DELL\\Desktop\\duhong\\test.png', 'rb').read()
# allure.attach('test_img', file, allure.attachment_type.PNG)PNG
@pytest.fixture
def attach_file_in_module_scope_fixture_with_finalizer(request):
    allure.attach('A text attacment in module scope fixture', 'blah blah blah', allure.attachment_type.TEXT)
    def finalizer_module_scope_fixture():
        allure.attach('A text attacment in module scope finalizer', 'blah blah blah blah',
                      allure.attachment_type.TEXT)
    request.addfinalizer(finalizer_module_scope_fixture)


def test_with_attacments_in_fixture_and_finalizer(attach_file_in_module_scope_finalizer):
    pass


def test_multiple_attachments():
    allure.attach.file('C:\\Users\\DELL\\Desktop\\duhong\\test.png', attachment_type=allure.attachment_type.PNG)
    allure.attach('<head></head><body> a page </body>', 'Attach with HTML type', allure.attachment_type.HTML)

(3)添加attach参数,Report展示见下图。

 小结

此外,Allure还支持Jenkins Plugin,后面我会专门写一篇博文给小伙伴们继续介绍和分享,感兴趣的话请关注我的博客。

其实上面说的大家都可以到官网来学习allure的用法和使用。


              【下面是我整理的2023年最全的软件测试工程师学习知识架构体系图】


一、Python编程入门到精通

二、接口自动化项目实战

三、Web自动化项目实战


四、App自动化项目实战

五、一线大厂简历


六、测试开发DevOps体系

七、常用自动化测试工具


八、JMeter性能测试

九、总结(尾部小惊喜)

生命不息,奋斗不止。每一份努力都不会被辜负,只要坚持不懈,终究会有回报。珍惜时间,追求梦想。不忘初心,砥砺前行。你的未来,由你掌握!

生命短暂,时间宝贵,我们无法预知未来会发生什么,但我们可以掌握当下。珍惜每一天,努力奋斗,让自己变得更加强大和优秀。坚定信念,执着追求,成功终将属于你!

只有不断地挑战自己,才能不断地超越自己。坚持追求梦想,勇敢前行,你就会发现奋斗的过程是如此美好而值得。相信自己,你一定可以做到!

                          

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/815624.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Linux 网络】 HTTPS协议原理 对称加密 非对称加密 数字证书

HTTPS协议 HTTPS协议和HTTP协议的区别什么是“加密” 和“解密”加密和解密的小故事 为什么要进行加密&#xff1f;臭名昭著的“运营商劫持”事件 常见加密方式对称加密非对称加密 数据摘要数字签名 HTTPS工作过程探究方案 1 &#xff1a; 只使用对称加密方案2 &#xff1a; 只…

微信小程序交易体验分常见问题指引

小程序交易体验分是为保障小程序用户的交易体验&#xff0c;促进开发者向用户提供更好的服务&#xff0c;帮助开发者更好的评估自身服务水平的机制。平台将对开发者在其小程序的违规行为进行判定&#xff0c;根据违规行为的严重程度对该小程序扣减不同分值的交易体验分&#xf…

Excel快捷键F1-F9详解:掌握实用快捷操作,提升工作效率

Excel是广泛应用于办公场景的优质电子表格软件&#xff0c;然而&#xff0c;许多人只是使用鼠标点击菜单和工具栏来完成操作&#xff0c;而忽略了快捷键的威力。在本文中&#xff0c;我们将详解Excel中的F1-F9快捷键&#xff0c;帮助您掌握实用的快捷操作&#xff0c;提升工作效…

多组学背景下的基因调控网络推断

染色质、转录因子和基因之间的相互作用产生了复杂的调节回路&#xff0c;可以表示为基因调节网络&#xff08;GRNs&#xff09;。GRNs的研究有助于了解疾病中细胞身份是如何建立、维持和破坏的。GRN可以从实验数据——历史上的大量组学数据——或文献中推断出来。单细胞多组学技…

图形化分析工具

1.图形化之短距分析 2.图形化之温度、CPU频率分析 3.常用指令集合 4.常见fastboot指令集合 5.模块之自动化分析–此项功能需要后续不断完善

再下一城丨美格智能座舱模组获头部新势力正式定点

近日&#xff0c;美格智能与国内领先的Tier1厂商密切协作&#xff0c;基于美格车载智能模组打造的智能座舱解决方案&#xff0c;成功获得国内某头部造车新势力的座舱域控制器项目定点&#xff0c;为其打造下一代智能座舱解决方案&#xff0c;创造更加沉浸和智能的座舱体验。 据…

C# Blazor 学习笔记(1):Blazor基础语法,组件化和生命周期

文章目录 前言基础语法路由Page 页面元素条件生成if / elseforforeach 绑定参数绑定(双向)事件绑定字典绑定 attributes 组件化如何使用Parameter 参数注入使用回调函数组件声明回调组件注入回调组件触发回调 直接控制 ref 生命周期App起始阶段&#xff1a;生命周期钩子阶段&am…

【产品文档】产品测试报告模板

今天和大家免费分享产品测试报告的文档模板。产品测试文档是在软件开发或产品开发过程中所编制的文件&#xff0c;用于记录测试计划、测试用例、测试结果和其他与产品测试相关的信息。它是测试团队或测试人员的重要工具&#xff0c;用于指导和管理测试过程&#xff0c;并与开发…

学网络安全,千万别棋差这一招

下午好&#xff0c;我的网工朋友 总感觉今年云计算的热度比网安高上不少&#xff0c;但网络安全在我心里依然是比较有意思的技术方向。 想学的人很多&#xff0c;想入门的人也很多。但找对方向和方法的人&#xff0c;很少很少。 网络安全到底怎么学&#xff1f; 其实入门这…

程序员有周末吗?

目录 一&#xff1a;周末的时间规划 二、提升周末体验感的好方法 三、一些数据 一&#xff1a;周末的时间规划 程序员有周末吗&#xff0c;是不是有的分大小周&#xff0c;好不容易轮到休息了&#xff0c;单位又搞什么团建&#xff0c;美名曰为了大家的健康。你要是为了大家…

高等数学中如何求渐近线

极限是数学中的一个重要概念&#xff0c;它描述了函数在某一点或无穷远处的行为。而渐近线是指函数图像在无穷远处的一条特殊直线&#xff0c;它与函数图像趋于无穷远时的趋势相似。 求渐近线的方法主要有以下几种&#xff1a; 1. 水平渐近线&#xff1a;当函数在无穷远处的极…

JavaScript作用域详解

目录 前言 什么是作用域 作用域类型 全局作用域 局部作用域 块级作用域 ES6之前 ES6以后 作用域链 变量提升 基础概念 优先级问题 闭包 定义 特点 使用场景 封装私有变量 延长变量周期 模块化、命名空间 缓存 ES6的作用域 const、let 块级作用域 变量提…

[css]margin-top不起作用问题(外边距合并)

在初学css时&#xff0c;会遇到突然间margin-top不起作用的情况。如下面&#xff1a; 情况一&#xff1a; 代码&#xff1a; <html> <head><style type"text/css"> * {margin:0;padding:0;border:0; }#outer {width:300px;height:300px;backgroun…

IPSec配置简介

实验拓扑&#xff1a; 实验目的 &#xff1a; PC1 ping通 PC2 AR1 配置 静态路由 IP route-static 0.0.0.0 0 100.1.12.2 AR3 配置静态路由 IP route-static 0.0.0.0 0 100.1.13.2 AR1 &#xff1a; 一.配置网络密钥交换提议 ike proposal 1 设置身份认证算法为&…

湖北安全员ABC证书电子版哪里下载?安全员证书可以全国通用吗?

湖北安全员ABC目前一个月有一到两批次的考试&#xff0c;需要报考安全员的直接问甘建二就行了&#xff0c;她都可以给您解疑答惑。 湖北安全员ABC证书电子版证书在哪里下载&#xff1f;怎么下载&#xff1f; 湖北安全员ABC证书也都是电子版的证书&#xff0c;直接从网上下载的…

IBM Spectrum Computing 分布式计算解决方案

IBM Spectrum Computing 分布式计算解决方案 Spectrum Computing 概览 20&#xff0b;年的分布式计算行业经验&#xff0c;全球各行业经验的总结和锤炼;全球TOP500企业客户的选择;前瞻性的产品研发路线&#xff0c;定义企业级分布式数据中心架构;成熟的全球ISV合作伙伴生态保…

为什么VPS是中小型企业的理想选择?

对于中小型企业来说&#xff0c;选择适合自身业务需求的托管方案至关重要。在如今数字化时代&#xff0c;VPS作为一种灵活、高性能的托管解决方案&#xff0c;成为中小型企业的理想选择。作为动态VPS代理产品供应商&#xff0c;我们深知一个高质量、高性能的VPS托管服务&#x…

Linux笔记——Linux基础终端命令

系列文章目录 Linux笔记——搜索命令find、解压缩命令、vi编辑器、用户权限命令、系统信息相关命令讲解 Linux笔记——进程管理与网络监控技术讲解 Linux笔记——磁盘进行分区与挂载介绍_linux 挂载分区 Linux笔记——管道相关命令以及shell编程 Linux笔记——rpm与yum下载…

pdf怎么压缩到1m?pdf压缩跟我这样做

在日常工作和学习中&#xff0c;我们常需要处理PDF文件&#xff0c;然而&#xff0c;有时候&#xff0c;PDF文件的大小可能会超过我们的预期&#xff0c;从而导致我们无法通过电子邮件或其他方式发送。这时候&#xff0c;我们就需要对PDF文件进行压缩&#xff0c;以降低其大小。…

vue-router 实现路由懒加载( 动态加载路由 )

在Vue.js中&#xff0c;可以使用vue-router来实现路由懒加载&#xff0c;也称为动态加载路由。路由懒加载的目的是在用户访问某个路由时再加载对应的组件&#xff0c;而不是在应用初始化时一次性加载所有组件。这样可以提高应用的初始加载速度&#xff0c;只在需要时才加载对应…