用表格做网站,10条重大新闻,官方模板,北京抖音代运营公司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 allureTEST_CASE_LINK https://github.com/qameta/allure-integrations/issues/8#issuecomment-268313637allure.link(https://www.youtube.com/watch?v4YYzUTYZRMU)
def test_with_link():passallure.link(https://www.youtube.com/watch?vSu5p2TqZxKU, name点击我看一看youtube吧)
def test_with_named_link():passallure.issue(140, bug issue链接)
def test_with_issue_link():passallure.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
测试方法示例 1 import pytest2 import allure3 import logging4 from util.assert_util import assert_keyword5 from util.request_util import api_request6 from util.global_var import *7 from util.excel_util import excel_util8 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 报告结果示例 自动化测试相关教程推荐 2023最新自动化测试自学教程新手小白26天入门最详细教程,目前已有300多人通过学习这套教程入职大厂_哔哩哔哩_bilibili 2023最新合集Python自动化测试开发框架【全栈/实战/教程】合集精华学完年薪40W_哔哩哔哩_bilibili 测试开发相关教程推荐 2023全网最牛字节测试开发大佬现场教学从零开始教你成为年薪百万的测试开发工程师_哔哩哔哩_bilibili postman/jmeter/fiddler测试工具类教程推荐 讲的最详细JMeter接口测试/接口自动化测试项目实战合集教程学jmeter接口测试一套教程就够了_哔哩哔哩_bilibili 2023自学fiddler抓包请一定要看完【如何1天学会fiddler抓包】的全网最详细视频教程_哔哩哔哩_bilibili 2023全网封神B站讲的最详细的Postman接口测试实战教学小白都能学会_哔哩哔哩_bilibili 总结 光学理论是没用的要学会跟着一起敲要动手实操才能将自己的所学运用到实际当中去这时候可以搞点实战案例来学习。 如果对你有帮助的话点个赞收个藏给作者一个鼓励。也方便你下次能够快速查找。
如有不懂还要咨询下方小卡片博主也希望和志同道合的测试人员一起学习进步
在适当的年龄选择适当的岗位尽量去发挥好自己的优势。
我的自动化测试开发之路一路走来都离不每个阶段的计划因为自己喜欢规划和总结
测试开发视频教程、学习笔记领取传送门