介绍如何把Allure集成到Python的Pytest单元测试框架中
Allure 分三篇文章讲解,从安装、实战、持续集成三个方面,上一篇文件已经讲了 Allure 的安装,详见《高大上的测试报告框架 - Allure(安装篇)》,本篇文章将讲解把 Allure 集成到 Pytest 单元测试框架实战,Let's go!
Allure 其实就是一个定义好的装饰器,只要了解一下语法和使用规则即可1.Allure装饰器功能说明
@allure.feature("一级模块") # 主要功能模块,具有相同feature名的用例将合并到一组@allure.story("二级模块")# 子功能模块,具有相同story名的用例将合并到一组,同时存在feature和story时,feature为父节层级
@allure.titile("测试用例标题")# 测试用例标题,这样在测试报告中就不会显示测试方法名称了
@allure.issue(URL, name='点击我跳转禅道')# 问题标识,说白了就是BUG,可为一个BUG的url链接地址
@allure.testcase(URL, name='点击我跳转禅道')# 用例标识,关联用例,可为一个用例的url链接地址
@allure.severity("critical")# 用例优先级,包含blocker, critical, normal, minor, trivial 5个不同等级,默认是normal
@allure.step("字符串相加:{0},{1}")# 测试步骤,通过{0},{1}可以取到函数传参
@allure.description()# 测试用例描述
@allure.attach.file(r'E:\test.png',"父亲节",allure.attachment_type.PNG)# 用于向测试报告中输入一些附加的信息,如:图片、日志等
2.feature、story、titile的使用
@allure.feature("一级模块") # 一般放在测试类上,同一个功能放在一个类下 @allure.story("二级模块") # 一般放在测试用例上,用来给用例分组 @allure.titile("测试用例标题") # 一般放在测试用例上,用来给用例起名字 例子:#!/usr/bin/env python# -*- coding: utf-8 -*-# @TIME : 2020/6/21 16:03# @Author : hubiao 公众号:彪哥的测试之路# @File : test_demo.pyimport pytestimport allurefrom Common.Assert import Assertionsfrom Swagger.RoleRest import RoleRest@allure.feature("角色")class Test_RoleRest: ''' 角色 ''' @allure.story("角色列表") @allure.title("获取角色类型信息") def test_find_RoleType(self, CenterBuilder): ''' 关注公众号:彪哥的测试之路 ''' response = RoleRest().find_RoleType(CenterBuilder) try: Assertions().assert_equal_value(response["success"][0], True) Assertions().assert_equal_value(len(response["result_roleTypeId"]), 4) except KeyError: assert False, 'Key不存在' finally: # 清理数据 passif __name__ == "__main__": pytest.main(["-s"])
3.step、attach的使用
@ allure.step("字符串相加: {0},{1}") # 当要把一个方法定义为步骤时使用 with allure.step("步骤1") # 当在一个测试方法内需要有多个步骤时使用 allure.attach('彪哥的测试之路','公众号',allure.attachment_type.TEXT) # 添加文本附件时使用 allure.attach.file(r'E:\test.png',"父亲节",allure.attachment_type.PNG) # 添加文件时使用,allure.attach 也可添加附件,但使用会稍微麻烦一点,建议使用 allure.attach.file 例子:#!/usr/bin/env python# -*- coding: utf-8 -*-# @TIME : 2020/6/21 16:03# @Author : hubiao 公众号:彪哥的测试之路# @File : test_demo.pyimport pytestimport allurefrom Common.Assert import Assertionsfrom Swagger.RoleRest import RoleRest@allure.feature("角色")class Test_RoleRest: ''' 角色 ''' @allure.story("角色列表") @allure.title("获取角色类型信息") def test_find_RoleType(self, CenterBuilder): ''' 关注公众号:彪哥的测试之路 ''' with allure.step("步骤1"): response = RoleRest().find_RoleType(CenterBuilder) with allure.step("步骤2"): allure.attach('彪哥的测试之路','公众号',allure.attachment_type.TEXT) with allure.step("步骤3"): allure.attach.file(r'E:\test.png',"父亲节",allure.attachment_type.PNG) try: Assertions().assert_equal_value(response["success"][0], True) Assertions().assert_equal_value(len(response["result_roleTypeId"]), 4) except KeyError: assert False, 'Key不存在' finally: # 清理数据 passif __name__ == "__main__": pytest.main(["-s"])
其它的就不演示了,大家可以自行添加一下,都比较简单。
3.把测试环境信息显示在 Allure 中
网上很多都是介绍用 allure.environment(host=‘127.0.0.1’) 这种方法设置的,这是 allure1 的设置方法,现在这种方法在 allure2 中不支持了,allure2 设置方法为:创建 environment.properties 或者 environment.xml 文件,并把对应的文件放到 allure-results 目录即可。如:
environment.properties
Browser=ChromeBrowser.Version=63.0Stand=Production
environment.xml
<environment> <parameter> <key>Browserkey> <value>Chromevalue> parameter> <parameter> <key>Browser.Versionkey> <value>63.0value> parameter> <parameter> <key>Standkey> <value>Productionvalue> parameter>environment>
实战篇就算是讲完了,下一篇完结篇讲如何把 Allure 接入 Jenkins,不懂的小伙伴可以留言或私信。
如果你认同这篇文章,请点击 在看![76bbee2d36d33fe97904fb285892496d.png](https://i-blog.csdnimg.cn/blog_migrate/8bc2ee30481915befea670b2f160e7d9.jpeg)