目录:导读
- 前言
- 一、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
下载后解压并配置环境变量
安装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
生成的报告:
3、allure特性-testcase
关联测试用例(可以直接给测试用例的地址链接)
例子:
TEST_CASE_LINK = 'https://mirrors.huaweicloud.com/'
@allure.testcase(TEST_CASE_LINK,'测试用例连接')
def test_search(self):print('搜索用例')
按重要性级别进行一定范围测试
通常测试有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
报告:
终极用例:
百度搜索:
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()
报告:
下面是我整理的2023年最全的软件测试工程师学习知识架构体系图 |
一、Python编程入门到精通
二、接口自动化项目实战
三、Web自动化项目实战
四、App自动化项目实战
五、一线大厂简历
六、测试开发DevOps体系
七、常用自动化测试工具
八、JMeter性能测试
九、总结(尾部小惊喜)
每一次的坚持和奋斗,都将在未来绽放耀眼的光芒。即使曲折多舛,也要保持信念,用努力和汗水书写辉煌的篇章。相信自己的实力,勇往直前,让奋斗成为你人生最华美的旋律。
只有勇敢面对困难,才能收获成长与成功。奋斗不仅是一种努力,更是一种态度,用心去追求梦想,坚韧地砥砺前行,你会发现,每一次的努力都是命运的转折点,让未来绽放耀眼光芒。
每一次的奋斗都是为了超越过去的自己,不断挑战极限,只有坚持不懈,勇往直前,才能创造属于自己的辉煌与成功,让努力成为人生最亮丽的底色。