发布时间:2023-03-02 11:30
1. Allure 简介
Allure 框架是一个灵活的、轻量级的、支持多语言的测试报告工具,它不仅以 Web 的方式展示了简介的测试结果,而且允许参与开发过程的每个人可以从日常执行的测试中,最大限度地提取有用信息。
Allure 是由 Java 语言开发的,支持 Pytest,JaveScript、PHP、Ruby 等。
那么下面就来说说如何使报告更加详细的显示我们需要的信息,以及 Allure 与 Jenkins 的集成。
(Windows/Mac 通用安装方法)
下载地址:https://github.com/allure-framework/allure2/releases,下载所需版本的 zip 包。
安装:
在测试执行期间收集结果
pytest [测试文件] -s -q --alluredir=./result/ --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 进行渲染后才能看到。
场景:
解决:
feature 相当于一个大的功能或模块。将 case 分类到某个 feature 中,并在报告中的 behaviors 中显示,相当于 testsuite。
story 相当于分支功能/模块,属于 feature 之下的结构,并在报告中的 features 中显示,相当于 testcase。
feature 与 story 类似于父子关系。
场景:
通常测试有冒烟测试、回归测试、线上验证测试等,那么就需要按照重要性级别来分别执行,比如上线时要把主流程和重要模块都跑一遍。
解决:
根据测试用例的重要性划分测试用例等级,如果没指定等级,默认为 NORMAL 级别:
步骤:
场景:
解决:
步骤:
@allure.link()、@allure.issue()、@allure.testcase() 主要是为了将 Allure 报告和测试管理系统集成,可以更快速地跳转到公司内部地址。
先看看三个装饰器的源码:
def link(url, link_type=LinkType.LINK, name=None): return safely(plugin_manager.hook.decorate_as_link(url=url, link_type=link_type, name=name)) def issue(url, name=None): return link(url, link_type=LinkType.ISSUE, name=name) def testcase(url, name=None): return link(url, link_type=LinkType.TEST_CASE, name=name)
小结
代码示例
import allure TEST_CASE_LINK = 'https://github.com/qameta/allure-integrations/issues/8#issuecomment-268313637' @allure.link('https://www.youtube.com/watch?v=4YYzUTYZRMU') def test_with_link(): pass @allure.link('https://www.youtube.com/watch?v=Su5p2TqZxKU', 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 报告
1)@allure.link() 不传 name 参数时的样式
如下图所示,不传 name 时,当链接很长,可读性就比较差啦。
2)@allure.link() 传了 name 参数时的样式
3)@allure.testcase() 的样式
如下图所示,和 link() 传了 name 参数时一样:
4)@allure.issue() 的样式
如下图所示,多了个虫子样式:
完整工程:https://github.com/juno3550/InterfaceAutoTestWithPytest
1 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(name="TestLoginModule") 16 class TestLoginModule: 17 18 @allure.story("注册功能") 19 @allure.title('用户注册') # 指定测试用例标题,默认是函数名 20 @allure.description('通过接口进行用户注册') # 添加测试用例描述 21 @allure.severity(allure.severity_level.BLOCKER) # 阻塞级别 22 @pytest.mark.run(order=1) 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(order=2) 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/')
需要的私我关键字【000】免费获取哦 注意关键字是:000
项目实战:
大型电商平台:
全套软件测试自动化测试教学视频
300G教程资料下载【视频教程+PPT+项目源码】
全套软件测试自动化测试大厂面经
python自动化测试++全套模板+性能测试
听说关注我并三连的铁汁都已经升职加薪暴富了哦!!!!