1. allure装饰器描述
使用方法 | 参数值 | 参数说明 |
---|---|---|
@allure.suite() | 测试套件 | 测试(集)套件,不用报告默认显示py文件名 |
@allure.epic() | epic描述 | 敏捷里面的概念,定义史诗,往下是feature |
@allure.feature() | 模块名称 | 功能点的描述,往下是story |
@allure.story() | 用户故事 | 用户故事,往下是title |
@allure.tag() | 测试用例标记 | 用于给用例打个标记 |
@allure.title(用例的标题) | 用例的标题 | 重命名html报告名称 |
@allure.testcase() | 测试用例的链接地址 | 对应功能测试用例系统里面的case |
@allure.issue() | 缺陷 | 对应缺陷管理系统里面的链接 |
@allure.description() | 用例描述 | 测试用例的描述 |
@allure.step() | 操作步骤 | 测试用例的步骤 |
@allure.severity() | 用例等级 | blocker,critical,normal,minor,trivial |
@allure.link() | 链接 | 定义一个链接,在测试报告展现 |
@allure.attachment() | 附件 | 报告添加附件 |
2.测试用例的级别
@allure.severity 测试用例的级别
Allure中对严重级别的定义:
blocker级别:中断缺陷(客户端程序无响应,无法执行下一步操作)
critical级别: 临界缺陷(功能点缺失)
normal级别:普通缺陷(数值计算错误)
minor级别: 次要缺陷(界面错误与UI需求不符)
trivial级别:轻微缺陷(必输项无提示, 或者提示不规范)
3.脚本例子
import allure
import pytest
# 不加任何标记,默认normal
def test_with_no_severity():
pass
# trivial:不重要,轻微缺陷(必输项无提示,或者提示不规范)
@allure.severity(allure.severity_level.TRIVIAL)
def test_with_trivial_severity():
pass
# minor 级别 不太重要,次要缺陷(界面错误与UI需求不符)
@allure.severity(allure.severity_level.MINOR)
def test_with_minor_severity():
pass
# normal:正常问题,普通缺陷(数值计算错误)
@allure.severity(allure.severity_level.NORMAL)
def test_with_normal_severity():
pass
# critical:严重,临界缺陷(功能点缺失)
@allure.severity(allure.severity_level.CRITICAL)
def test_with_ritical_severity():
pass
# blocker:阻塞,中断缺陷(客户端程序无响应,无法执行下一步操作)
@allure.severity(allure.severity_level.BLOCKER)
def test_with_blocker_severity():
pass
@allure.severity(allure.severity_level.NORMAL)
class TestClassWithNormalSeverity(object):
# 不加任何标记,默认为同class级别
def test_inside_with_normal_severity(self):
pass
# 重新设置了critical级别
@allure.severity(allure.severity_level.CRITICAL)
def test_inside_with_critical_severity(self):
pass
import pytest
from selenium import webdriver
import allure
def add(x,y):
return x+y
def test1():
assert 3==add(1,1)
def test2():
assert 1!=add(1,1)
def func(x):
if x==0:
raise ValueError("value error")
else:
pass
def test_mytest1():
with pytest.raises(ValueError):
func(0)
def test_mytest2():
assert func(1)==None
@pytest.mark.parametrize(
"x,y,expected",
[
(1,1,2),
(2,2,4),
(10,10,20),
]
)
def test_add(x,y,expected):
assert add(x,y) == expected
def test_search_result():
pytest.skip("Skipping test..later I will implement it")
if __name__ == "__main__":
pytest.main(['-s','./test_func.py','-m','a'])
4. 测试报告
也可以选择中文的报告