1. Allure框架
Allure 是一个report框架,之成python的pytest框架,也可以集成到jenkins。
2. Allure安装和配置
1. 安装jdk1.8+
2. 下载Allure的zip安装包,解压之后放到一个指定目录下
https://github.com/allure-framework/allure2/releases
3. cd到包的bin目录下,运行allure.bat
4. 将allure添加到系统变量path中
5打开cmd 输入allure,代表配置成功
3. python安装allure模块
pip install allure-pytest
4. allure执行命令生成测试报告
pytest --alluredir=report/result pytest_zzfx.py(对pytest_zzfx.py执行测试用例,结果生成在同级目录下的report/result)
allure generate report/result -o html1(生成网页版测试报告)
pytest-allure常用命令
5. allure实例
import pytest, allure #导包
@allure.feature('报告一级标题')
@allure.story('报告二级标题')
class XXX(object):
def setup_class(self):
#做登录,初始化数据等
pass
def teardown_class(self):
#做清数据,退出登录等
pass
@pytest.allure.severity(pytest.allure.severity_level.NORMAL) #定义用例的级别
@pytest.allure.testcase('报告中用例标题')
def test_用例名(self):
pass
assert xxx #断言
@pytest.allure.severity(pytest.allure.severity_level.MAJOR)
@pytest.allure.testcase('报告中用例标题')
def test_用例名(self):
pass
assert xxx #断言
# coding:utf-8
import pytest
import allure
# 测试函数
@allure.step("字符串相加:{0},{1}") # 测试步骤,可通过format机制自动获取函数参数
def str_add(str1, str2):
print "hello"
if not isinstance(str1, str):
return "%s is not a string" % str1
if not isinstance(str2, str):
return "%s is not a string" % str2
return str1 + str2
@allure.severity("critical") # 优先级,包含blocker, critical, normal, minor, trivial 几个不同的等级
@allure.feature("测试模块_demo1") # 功能块,feature功能分块时比story大,即同时存在feature和story时,feature为父节点
@allure.story("测试模块_demo2") # 功能块,具有相同feature或story的用例将规整到相同模块下,执行时可用于筛选
@allure.issue("BUG号:123") # 问题表识,关联标识已有的问题,可为一个url链接地址
@allure.testcase("用例名:测试字符串相等") # 用例标识,关联标识用例,可为一个url链接地址
@pytest.mark.parametrize("para_one, para_two", # 用例参数
[("hello world", "hello world"), # 用例参数的参数化数据
(4, 4),
("中文", "中文")],
ids=["test ASCII string", # 对应用例参数化数据的用例名
"test digital string",
"test unicode string"])
def test_case_example(para_one, para_two):
"""用例描述:测试字符串相等
:param para_one: 参数1
:param para_two: 参数2
"""
# 获取参数
paras = vars()
# 报告中的环境参数,可用于必要环境参数的说明,相同的参数以后者为准
allure.environment(host="172.6.12.27", test_vars=paras)
# 关联的资料信息, 可在报告中记录保存必要的相关信息
allure.attach("用例参数", "{0}".format(paras))
# 调用测试函数
res = str_add(para_one, para_two)
# 对必要的测试中间结果数据做备份
allure.attach("str_add返回结果", "{0}".format(res))
# 测试步骤,对必要的测试过程加以说明
with pytest.allure.step("测试步骤2,结果校验 {0} == {1}".format(res, para_one+para_two)):
assert res == para_one+para_two, res
if __name__ == '__main__':
# 执行,指定执行测试模块_demo1, 测试模块_demo2两个模块,同时指定执行的用例优先级为critical,blocker
pytest.main(['--allure_stories=测试模块_demo1, 测试模块_demo2', '--allure_severities=critical, blocker'])
网友评论