语文建设编辑部官方网站,物联网是什么,做网站优化的教程,长沙制作网页联系方式1. Allure 简介
简介
Allure 框架是一个灵活的、轻量级的、支持多语言的测试报告工具#xff0c;它不仅以 Web 的方式展示了简介的测试结果#xff0c;而且允许参与开发过程的每个人可以从日常执行的测试中#xff0c;最大限度地提取有用信息。
Allure 是由 Java 语言开发…1. Allure 简介
简介
Allure 框架是一个灵活的、轻量级的、支持多语言的测试报告工具它不仅以 Web 的方式展示了简介的测试结果而且允许参与开发过程的每个人可以从日常执行的测试中最大限度地提取有用信息。
Allure 是由 Java 语言开发的支持 PytestJaveScript、PHP、Ruby 等。
从 DEV/QA 的角度来看Allure 提供了详尽的测试报告比如简化了常见缺陷的统计失败的测试可以分为 bug 和被中断的测试还可以配置日志、步骤、fixture、附件、计时、执行历史以及与 TMS、BUG 管理系统、Jenkins 集成等。所以通过以上配置所有负责的开发人员和测试人员可以尽可能地掌握测试信息。从管理者的角度来看Allure 提供了一个清晰的“大图”即 High Level 的统计报告其中包括已覆盖的特性、缺陷聚集的位置、执行时间轴的外观以及许多其他方便的事情。Allure 的模块化和可扩展性保证了你总是能够对某些东西进行微调使得 Allure 更适合你。
那么下面就来说说如何使报告更加详细的显示我们需要的信息以及 Allure 与 Jenkins 的集成。
安装
Windows/Mac 通用安装方法
下载地址https://github.com/allure-framework/allure2/releases下载所需版本的 zip 包。
安装
解压 — 进入 bin 目录 — 运行 allure.bat把 bin 目录加入 Path 环境变量配合 pytest使用 allure2 生成更加精美的测试报告pip install allure-pytest
运行方法
在测试执行期间收集结果
pytest [测试文件] -s -q --alluredir./result/ --clean-alluredir
-s表示将执行成功的案例日志打印出来-q若跟文件执行路径则代表只需要执行的文件--alluredir指定存储测试结果的路径若目录不存在则会新建--clean-alluredir清除历史结果数据
查看测试报告
方式一用于在本地渲染后对外展示结果
allure serve ./result/
方式二用于在本地渲染和查看结果
# 生成报告
allure generate ./result/ -o ./report/ --clean # 注意覆盖路径加 --clean# 打开报告
allure open -h 127.0.0.1 -p 8883 ./report/ 注意/report/ 目录中的 index.html 就是最终的结果页面但直接通过浏览器打开这个文件是看不到实际报告内容的这是因为实际报告内容需要 allure 进行渲染后才能看到。
2. Allure 常用特性
场景
希望在报告中看到测试功能子功能或场景测试步骤包括测试附加信息。
解决
import allureallure.feature(功能名称)allure.story(子功能名称)allure.title(测试用例名称)allure.step(步骤细节)allure.description(测试用例描述)allure.attach(具体文本信息)需要附加的信息可以是数据文本图片视频网页如果只测试登录功能运行的时候可以加限制过滤如pytest 文件名 --allure_features 购物车功能 --allure_stories 加入购物车 alllure.feature() 与 allure.store() 的关系
feature 相当于一个大的功能或模块。将 case 分类到某个 feature 中并在报告中的 behaviors 中显示相当于 testsuite。
story 相当于分支功能/模块属于 feature 之下的结构并在报告中的 features 中显示相当于 testcase。
feature 与 story 类似于父子关系。
allure.step() 与 with allure.step() 的区别 测试过程中每个步骤一般放在具体逻辑方法中。可以放在关键步骤中在报告中显示。在 App、Web 自动化测试当中建议每切换到一个新的页面当做一个 step。
用法
allure.step()只能以装饰器的形式放在类或者方法上。with allure.step()可以放在测试用例方法里面但测试步骤的代码需要被该语句包含 给测试用例划分优先级
场景
通常测试有冒烟测试、回归测试、线上验证测试等那么就需要按照重要性级别来分别执行比如上线时要把主流程和重要模块都跑一遍。
解决
通过附加 pytest.mark 标记描述通过 allure.feature、allure.story 标记描述通过 allure.severity 直接标记用例级别 根据测试用例的重要性划分测试用例等级如果没指定等级默认为 NORMAL 级别
BLOCKER阻塞缺陷功能未实现无法下一步CRITICAL严重缺陷功能点缺失NORMAL一般缺陷边界情况格式错误MINOR次要缺陷界面错误与ui需求不符TRIVIAL轻微缺陷必须项无提示或者提示不规范
步骤
在方法、函数和类上面加allure.severity(allure.severity_level.TRIVIAL)指定执行对应级别的用例pytest -s -v 文件名 --allure-severities normal, critical 给 Allure 测试报告添加内容图片、附件、文本、截图、HTML 等
场景
前端自动化测试经常需要附加图片或 html比如在适当的地方、适当的时机截图等。
解决
allure.attach() 显示许多不同类型的提供的附件可以补充测试、步骤或测试结果。
步骤 在测试报告里附加网页
格式allure.attach(body(内容), name, attachment_typeextension)示例allure.attach(head/headbody首页/body, 这是错误页的结果信息, allure.attachment_type.HTML)
在测试报告里附加图片
格式allure.attach.file(source, name, attachment_type, extension)示例allure.attach.file(./result/b.png, attachment_typeallure.attachment_type.PNG)
集成测试管理系统
allure.link()、allure.issue()、allure.testcase() 主要是为了将 Allure 报告和测试管理系统集成可以更快速地跳转到公司内部地址。
先看看三个装饰器的源码 def link(url, link_typeLinkType.LINK, nameNone): return safely(plugin_manager.hook.decorate_as_link(urlurl, link_typelink_type, namename)) def issue(url, nameNone): return link(url, link_typeLinkType.ISSUE, namename) def testcase(url, nameNone): return link(url, link_typeLinkType.TEST_CASE, namename)
小结
issue() 和 testcase() 其实调用的也是 link()只是 link_type 不一样。必传参数 url跳转的链接。可选参数 name显示在 Allure 报告的名字如果不传就是显示完整的链接建议传不然可读性不高。可以理解成三个方法是一样的我们都提供跳转链接和名字只是链接的 type 不一样最终显示出来的样式不一样而已type 不一样样式不一样。如果你喜欢只用 allure.link() 也可以。而出现三个装饰器的原因是为了更好地将链接进行分类访问链接、Bug 链接、测试用例链接。
代码示例 import allure TEST_CASE_LINK https://github.com/qameta/allure-integrations/issues/8#issuecomment-268313637 allure.link(https://www.youtube.com/watch?v4YYzUTYZRMU) def test_with_link(): pass allure.link(https://www.youtube.com/watch?vSu5p2TqZxKU, name点击我看一看youtube吧) def test_with_named_link(): pass allure.issue(140, bug issue链接) def test_with_issue_link(): pass allure.testcase(TEST_CASE_LINK, 测试用例地址) def test_with_testcase_link(): pass 运行结果查看 Allure 报告
1allure.link() 不传 name 参数时的样式
如下图所示不传 name 时当链接很长可读性就比较差啦。 2allure.link() 传了 name 参数时的样式 3allure.testcase() 的样式
如下图所示和 link() 传了 name 参数时一样 4allure.issue() 的样式
如下图所示多了个虫子样式 3. 接口自动化测试框架示例
完整工程https://github.com/juno3550/InterfaceAutoTestWithPytest
测试方法示例 import pytest 2 import allure 3 import logging 4 from util.assert_util import assert_keyword 5 from util.request_util import api_request 6 from util.global_var import * 7 from util.excel_util import excel_util 8 9 10 register_test_data excel_util.get_sheet_data(注册) 11 login_test_data excel_util.get_sheet_data(登录) 12 13 14 allure.feature(登录模块) 15 pytest.mark.dependency(nameTestLoginModule) 16 class TestLoginModule: 17 18 allure.story(注册功能) 19 allure.title(用户注册) # 指定测试用例标题默认是函数名 20 allure.description(通过接口进行用户注册) # 添加测试用例描述 21 allure.severity(allure.severity_level.BLOCKER) # 阻塞级别 22 pytest.mark.run(order1) 23 pytest.mark.parametrize(case_data, register_test_data) 24 def test_register(self, case_data): 25 with allure.step(读取请求数据调用接口): 26 logging.info(接口用例数据%s % case_data) 27 response api_request(case_data[API_IP], case_data[API_URI], case_data[REQUEST_METHOD], 28 case_data[API_REQUEST_DATA], case_data[RESPONSE_EXTRACT_VAR], 29 case_data[REQUEST_HEADER], case_data[REQUEST_COOKIE]) 30 with allure.step(获取响应数据进行断言): 31 assert_keyword(response, case_data[RESPONSE_ASSERT_KEYWORD]) 32 33 allure.story(登录功能) 34 allure.title(用户登录) # 指定测试用例标题默认是函数名 35 allure.description(通过接口进行用户登录) # 添加测试用例描述 36 allure.severity(allure.severity_level.BLOCKER) # 阻塞级别 37 pytest.mark.run(order2) 38 pytest.mark.parametrize(case_data, login_test_data) 39 def test_login(self, case_data): 40 with allure.step(读取请求数据调用接口): 41 logging.info(接口用例数据%s % case_data) 42 response api_request(case_data[API_IP], case_data[API_URI], case_data[REQUEST_METHOD], 43 case_data[API_REQUEST_DATA], case_data[RESPONSE_EXTRACT_VAR], 44 case_data[REQUEST_HEADER], case_data[REQUEST_COOKIE]) 45 with allure.step(获取响应数据进行断言): 46 assert_keyword(response, case_data[RESPONSE_ASSERT_KEYWORD]) 47 48 49 if __name__ __main__: 50 test_dir os.path.dirname(__file__) 51 pytest.main([-s, -q, test_dir, --alluredir, ../test_result/, --clean-alluredir]) 52 os.system(allure generate ../test_result/ -o ../test_report/ --clean) 53 os.system(allure open -h 127.0.0.1 -p 8881 ../test_report/) 测试数据示例 Allure 报告结果示例 总结
感谢每一个认真阅读我文章的人
作为一位过来人也是希望大家少走一些弯路如果你不想再体验一次学习时找不到资料没人解答问题坚持几天便放弃的感受的话在这里我给大家分享一些自动化测试的学习资源希望能给你前进的路上带来帮助。 软件测试面试文档
我们学习必然是为了找到高薪的工作下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料并且有字节大佬给出了权威的解答刷完这一套面试资料相信大家都能找到满意的工作。 视频文档获取方式 这份文档和视频资料对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库这个仓库也陪伴我走过了最艰难的路程希望也能帮助到你以上均可以分享点下方进群即可自行领取。