火爆全网,Python自动化测试Allure测试报告生成,最强总结...

目录:导读

    • 前言
    • 一、Python编程入门到精通
    • 二、接口自动化项目实战
    • 三、Web自动化项目实战
    • 四、App自动化项目实战
    • 五、一线大厂简历
    • 六、测试开发DevOps体系
    • 七、常用自动化测试工具
    • 八、JMeter性能测试
    • 九、总结(尾部小惊喜)


前言

Allure测试报告框架帮助你轻松实现 “高大上” 报告展示。
重点展示了如何将Allure集成到已有的自动化测试工程中、以及如何实现报表的优化展示。

Allure非常强大,支持多种语言多种测试框架,无论是Java/Python还是Junit/TestNG,其他语言或者框架实现的流程和本文一致,具体配置参照各语言框架规范

安装

Windows用户:
scoop install allure (需要先下载并安装Scoop,该方法无需配置环境变量)

MAC用户:
通过Homebrew进行自动安装
brew install allure (如果Homebrew版本比较旧,需要先升级Homebrew,否则安装的allure版本也很老,可能会与Python插件不兼容)

手动安装:
可以从官网 https://repo.maven.apache.org/maven2/io/qameta/allure/allure-commandline/ 手动下载
目前最新版本为2.23.1

31

下载后解压并配置环境变量

安装allure-pytest插件

pip install allure-pytest

allure常用特性

希望在报告中看到测试功能,子功能或场景,测试步骤,包括测试附加信息可以使用@feature,@story,@step,@attach

步骤:

import allure

功能上加@allure.feature(“功能名称”)
子功能上加@allure.story(“子功能名称”)
步骤上加@allure.step(“步骤细节”)
@allure.attach(“具体文本信息”),需要附加的信息,可以是数据,文本,图片,视频,网页

如果只测试部分功能运行的时候可以加限制过滤:
pytest 文件名 --allure-features “需要运行的功能名称”

1、allure特性—feature/story
@allure.feature与@allure.store的关系

feature相当于一个功能,一个大的模块,将case分类到某个feature中,报告中在behaviore中显示,相当于testsuite

story相当于对应这个功能或者模块下的不同场景,分支功能,属于feature之下的结构,报告在features中显示,相当于testcase
feature与story类似于父与子关系

2、step特性
测试过程中每个步骤,一般放在具体逻辑方法中
可以放在关键步骤中,在报告中显示
在app,web自动化测试中,建议每切换到一个新的页面当做一个step
用法:

@allure.step() 只能以装饰器的形式放在类或方法上面
with allure.step(): 可以放在测试用例方法里面,但测试步骤的代码需要被该语句包含

运行:
在测试执行期间收集结果

pytest [测试文件] -s -q --alluredir=./result --clean-alluredir

–alluredir这个选项,用于指定存储测试结果的路径
–clean-alluredir 这个选项用来清除之前生成的结果

查看测试报告

方法1:
测试完成后查看实际报告,在线看报告,会直接打开默认浏览器展示当前报告

allure serve ./result 

方法2:
从结果生成报告,这是一个启动tomcat的服务,需要两个步骤

生成报告:

allure generate ./result -o ./report --clean   

注意:–clean用来清除之前已生成的报告

打开报告:

allure open -h 127.0.0.1 -p 8883 ./report

该方法直接生成一个tomcat服务,可远程访问

举个例子:
有如下代码文件

import allure
import pytest@allure.feature('登录模块')
class TestLogin():@allure.story('登录成功')@allure.title('登录成功标题')def test_login_sucess(self):with allure.step('步骤1:打开应用'):print('应用已打开')with allure.step('步骤2:进入登录页面'):print('登录页面已打开')with allure.step('步骤3:输入用户名和密码'):print('用户名和密码输入成功')print('登录测试用例:登录成功')@allure.story('登录成功')def test_login_sucess2(self):assert '1' == 1print('登录测试用例:登录成功')@allure.story('登录失败')def test_login_failure_a(self):print('登录测试用例:登录失败,用户名缺失')@allure.story('登录失败')def test_login_failure_b(self):print('登录测试用例:登录失败,密码缺失')@allure.story('登录失败')def test_login_failure_c(self):with allure.step('输入用户名'):print('已输入用户名')with allure.step('输入密码'):print('已输入密码')with allure.step('点击登录'):print('已点击登录')print('登录测试用例:登录失败,密码错误')@allure.feature('搜索模块')
class TestSearch():def test_search1(self):print('搜索用例1')TEST_CASE_LINK = 'https://mirrors.huaweicloud.com/'@allure.testcase(TEST_CASE_LINK,'测试用例连接')def test_search2(self):print('搜索用例2')@allure.step('搜索步骤')def test_search3(self):print('搜索用例3')

依次执行命令:

pytest test_allure.py --alluredir=./result --clean-alluredirallure serve ./result 

生成的报告:

32

3、allure特性-testcase

关联测试用例(可以直接给测试用例的地址链接)

例子:

TEST_CASE_LINK = 'https://mirrors.huaweicloud.com/'
@allure.testcase(TEST_CASE_LINK,'测试用例连接')
def test_search(self):print('搜索用例')

33

按重要性级别进行一定范围测试

通常测试有P0、冒烟测试、验证上线测试。按重要性级别来执行的,比如上线要把主流程和重要模块都跑一遍,可通过以下方法解决

通过附加@pytest.mark标记
通过allure.feature,allure.story
也可以通过allure.severity来附加标记

级别:
trivial:不重要,轻微缺陷(必输项无提示,或者提示不规范)
minor:不太重要,次要缺陷(界面错误与UI需求不符)
normal:正常问题,普通缺陷(数值计算错误)
critical:严重,临界缺陷(功能点缺失)
blocker:阻塞,中断缺陷(客户端程序无响应,无法执行下一步操作)

使用方法:
在方法、函数和类上面加 @allure.severity(allure.severity_level.TRIVIAL)

执行:

pytest -s -v 文件名 --allure-severities normal,critical

举例说明:

import allure
import pytest# 不加任何标记,默认normal
def test_with_no_severity():pass# trivial:不重要,轻微缺陷(必输项无提示,或者提示不规范)
@allure.severity(allure.severity_level.TRIVIAL)
def test_with_trivial_severity():pass# minor 级别 不太重要,次要缺陷(界面错误与UI需求不符)
@allure.severity(allure.severity_level.MINOR)
def test_with_minor_severity():pass# normal:正常问题,普通缺陷(数值计算错误)
@allure.severity(allure.severity_level.NORMAL)
def test_with_normal_severity():pass# critical:严重,临界缺陷(功能点缺失)
@allure.severity(allure.severity_level.CRITICAL)
def test_with_ritical_severity():pass# blocker:阻塞,中断缺陷(客户端程序无响应,无法执行下一步操作)
@allure.severity(allure.severity_level.BLOCKER)
def test_with_blocker_severity():pass@allure.severity(allure.severity_level.NORMAL)
class TestClassWithNormalSeverity(object):# 不加任何标记,默认为同class级别def test_inside_with_normal_severity(self):pass# 重新设置了critical级别@allure.severity(allure.severity_level.CRITICAL)def test_inside_with_critical_severity(self):pass

报告:

34

终极用例:
百度搜索:

import pytest
import allure
from selenium import webdriver
import time@allure.testcase('https://www.github.com')
@allure.feature("百度搜索")
@pytest.mark.parametrize('test_data1',['allure','pytest','unittest'])
def test_steps_demo(test_data1):with allure.step('打开百度网页'):driver=webdriver.Chrome()driver.get('http://www.baidu.com')driver.maximize_window()with allure.step(f'输入搜索词:{test_data1}'):driver.find_element_by_id('kw').send_keys(test_data1)time.sleep(2)driver.find_element_by_id('su').click()time.sleep(2)with allure.step('保存图片'):driver.save_screenshot('./screenshot/baidu.png')allure.attach.file('./screenshot/baidu.png',attachment_type=allure.attachment_type.PNG)with allure.step('关闭浏览器'):driver.quit()

报告:

35

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

一、Python编程入门到精通

请添加图片描述

二、接口自动化项目实战

请添加图片描述

三、Web自动化项目实战

请添加图片描述

四、App自动化项目实战

请添加图片描述

五、一线大厂简历

请添加图片描述

六、测试开发DevOps体系

请添加图片描述

七、常用自动化测试工具

请添加图片描述

八、JMeter性能测试

请添加图片描述

九、总结(尾部小惊喜)

每一次的坚持和奋斗,都将在未来绽放耀眼的光芒。即使曲折多舛,也要保持信念,用努力和汗水书写辉煌的篇章。相信自己的实力,勇往直前,让奋斗成为你人生最华美的旋律。

只有勇敢面对困难,才能收获成长与成功。奋斗不仅是一种努力,更是一种态度,用心去追求梦想,坚韧地砥砺前行,你会发现,每一次的努力都是命运的转折点,让未来绽放耀眼光芒。

每一次的奋斗都是为了超越过去的自己,不断挑战极限,只有坚持不懈,勇往直前,才能创造属于自己的辉煌与成功,让努力成为人生最亮丽的底色。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JavaWeb(9)——前端综合案例3(悬停显示下拉列表)

一、实例需求 ⌛ 实现类似百度首页的“一个简单的鼠标悬停显示的下拉列表效果”。 二、代码实现 ☕ <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title><style>.dropdown-cont…

外部链接跳转到vue项目传递参数实现单点登录

1、问题背景描述&#xff1a; 我有一个困扰了很久项目需求&#xff0c;前台门户用的MVC&#xff0c;前台登录之后需要能点击某个按钮就能进入后台vue开发的前端项目&#xff0c;不需要重新登录。这个需求中mvc项目相对于vue项目来说是外部链接&#xff0c;他要跳转到vue项目&a…

9、Kubernetes核心技术 - Volume

目录 一、概述 二、卷的类型 三、emptyDir 四、hostPath 五、NFS 5.1、master服务器上搭建nfs服务器 5.2、各个slave节点上安装nfs客户端 5.3、创建Pod 六、PV和PVC 6.1、PV 6.1.1、PV资源清单文件示例 6.1.2、PV属性说明 6.1.3、PV的状态 6.2、PVC 6.2.1、PVC资…

git开发过程中的使用

1、先创建本地分支&#xff0c;然后修改代码 2、本地提交 push 3、合并为主分支 回到master分支

Bigemap如何添加谷歌地图?

工具 Bigemap gis office地图软件 BIGEMAP GIS Office-全能版 Bigemap APP_卫星地图APP_高清卫星地图APP 打开软件&#xff0c;要提示需要授权和添加地图&#xff0c;然后去点击选择地图这个按钮&#xff0c;列表中有个添加按钮点进去选择添加地图的方式。 第一种方式&#x…

UML—用例图的那些事

目录 背景: 1.用例图的发展史 过程: 1.用例图中的元素和关系 2.应用中的例子 总结&#xff1a; 背景: 1.用例图的发展史 用例图是一种常用的软件工程工具&#xff0c;用于描述系统的功能需求和用户与系统的交互。它在软件开发过程中起到了重要的作用&#xff0c;并且经历了…

【开源项目--稻草】Day06

【开源项目--稻草】Day06 1. 学生提问与解答功能2. 显示create.html2.1 HomeController中代码2.2 复用网页的标签导航条 3. 创建问题发布界面3.1 富文本编辑器 4.多选下列框5.动态加载所有标签和老师6. 发布问题的业务处理 1. 学生提问与解答功能 学生提问: 提问时指定标签和回…

VBA遍历Wrod所有表格每个单元格,单元格未尾两个回车替换

一、遍历 word中遍历所有表格的每个单元格。因为在单元格时会常出错。浪费了不少时间。 Sub a()Dim doc As Document, tb As Table, ce As cellDim rng As Range, p As ParagraphSet doc ActiveDocumentFor Each tb In doc.TablesFor Each ce In tb.Range.Cells 关键处就是这里…

Java中的Unsafe类详解

Java中的Unsafe类详解 1. Unsafe 概念2. Unsafe 构造及获取3. 功能和应用3.1 内存管理3.1.1 普通读写3.1.2 volatile 读写3.1.3 有序读写3.1.4 直接操作内存 3.2 CAS3.3 偏移量3.4 线程调度3.5 类加载3.6 内存屏障3.7 其他操作 4. 潜在风险和挑战5. 最佳实践5.1 使用案例&#…

QtAV for ubuntu16.04

下载ubuntu https://releases.ubuntu.com/16.04/ubuntu-16.04.7-desktop-amd64.iso 下载ffmpeg https://ffmpeg.org/download.html 下载QtAV https://github.com/wang-bin/QtAV/releases 更新 sudo apt update 安装库 sudo apt-get install libglu1-mesa-dev freeglut3-dev…

【算法系列 | 7】深入解析查找算法之—布隆过滤器

序言 心若有阳光&#xff0c;你便会看见这个世界有那么多美好值得期待和向往。 决定开一个算法专栏&#xff0c;希望能帮助大家很好的了解算法。主要深入解析每个算法&#xff0c;从概念到示例。 我们一起努力&#xff0c;成为更好的自己&#xff01; 今天第3讲&#xff0c;讲一…

【数据结构】链表(一)

链表&#xff08;一&#xff09; 文章目录 链表&#xff08;一&#xff09;01 引入02 概念及结构03 单向不带头不循环链表实现3.1 创建节点类型3.2 简易创建一个链表3.3 遍历链表每个节点3.4 获取链表长度3.5 查找是否包含关键字key是否在单链表当中3.6 头插法3.7 尾插法3.8 任…

MySQL 重置root 密码

5.7 版本 首先要把服务mysql57 关闭 net stop MySQL57 在安装的mysql57的程序的bin中 运行cmd&#xff08;管理员运行&#xff09; mysqld --defaults-file‘mysql存放数据的位置\my.ini’ --skip-grant-tables 上图 错误 注意&#xff1a;如果遇到mysqld: Can’t change dir…

【从零学习python 】02. 开发工具介绍

文章目录 编写Python代码一、常见的代码编辑工具二、运行Python程序三、Pycharm的下载和安装PyCharm的主要功能区域进阶案例 编写Python代码 根据我们之前介绍的知识&#xff0c;我们知道&#xff0c;所谓代码其实就是将一段普通文本按照一定的规范编写&#xff0c;然后交给电…

Cesium 加载ArcGIS Server切片服务错级问题

1.首先上官方api说明 ArcGisMapServerImageryProvider - Cesium Documentation 里面没有 zoomoffset参数!!! 2.如果按照互联网栅格切片规则 3857、4326、4490常用切片层级参数,则直接加载显示地图 viewer.imageryLayers.addImageryProvider(new Cesium.ArcGisMapServerI…

【Spring Boot】(三)深入理解 Spring Boot 日志

文章目录 前言一、日志文件的作用二、Spring Boot 中的日志2.1 查看输出的日志信息2.2 日志格式二、Spring Boot 中的日志2.1 查看输出的日志信息2.2 日志格式 三、自定义日志输出3.1 日志框架3.2 日志对象的获取3.3 使用日志对象打印日志 四、日志级别4.1 日志级别的作用4.2 日…

Oracle-expdp报错ORA-39077、06502(Bug-16928674)

问题: 用户在使用expdp进程导出时&#xff0c;出现队列报错ORA-39077、ORA-06502 ORA-31626: job does not exist ORA-31638: cannot attach to job SYS_EXPORT_SCHEMA_01 for user SYS ORA-06512: at "SYS.DBMS_SYS_ERROR", line 95 ORA-06512: at "SYS.KUPV$…

【修正-高斯拉普拉斯滤波器-用于平滑和去噪】基于修正高斯滤波拉普拉斯地震到达时间自动检测研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

解密HTTP代理爬虫中的IP代理选择与管理策略

在当今数据驱动的世界中&#xff0c;HTTP代理爬虫作为一项重要的数据采集工具&#xff0c;其成功与否往往取决于IP代理的选择与管理策略。作为一家专业的HTTP代理产品供应商&#xff0c;我们深知IP代理在数据采集中的重要性。在本文中&#xff0c;我们将分享一些关于HTTP代理爬…

图像膨胀+滤波达到边缘外扩模糊效果

有一个扯淡需求, 根据某些格网值渲染对应的颜色, 我们做的实现方案是按照色代码渐变做颜色映射, 但是某些厂家不顾结果正确性与否, 应是为了好看做的好看, 将边界膨胀模糊, 一个非风场,力场类似场数据做了一个类似场的渲染效果, 也不知道说啥好, 例如原始图渲染如下 经过一系列…