前言
Allure框架是一个灵活的轻量级多语言测试报告工具,它不仅以web的方式展示了简介的测试结果,而且允许参与开发过程的每个人从日常执行的测试中最大限度的提取有用信息
从dev/qa的角度来看,Allure报告简化了常见缺陷的统计:失败的测试可以分为bug和被中断的测试,还可以配置日志、步骤、fixture、附件、计时、执行历史以及与TMS和BUG管理系统集成,所以,通过以上配置,所有负责的开发人员和测试人员可以尽可能的掌握测试信息。
从管理者的角度来看,Allure提供了一个清晰的“大图”,其中包括已覆盖的特性、缺陷聚集的位置、执行时间轴的外观以及许多其他方便的事情。allure的模块化和可扩展性保证了您总是能够对某些东西进行微调,使Allure更适合您,那么今天我们就来说说如何使报告更加详细的显示我们需要的信息,以及allure与jenkins的集成
一、生成报告
pytest框架编写的项目如何生成测试报告,这里不再讲解。
注意:python使用的allure插件为allure-pytest
二、测试代码
为了大家能够快速的认识allure的所有功能特性,附上完整的测试代码
"""
import pytest
import allure
@pytest.mark.hookwrapper
def pytest_runtest_makereport(item):
outcome = yield
report = outcome.get_result()
report.nodeid = report.nodeid.encode("utf-8").decode("unicode_escape") # 解决乱码
@allure.step("打开浏览器")
def fixture_step():
pass
@pytest.fixture
def init_url():
fixture_step()
yield True
"""
import pytest
import allure
import os
def login(username=None, password=None):
"""模拟登录"""
user = "linux超"
pwd = "123456"
if user == username and pwd == password:
return {"code": 1001, "msg": "登录成功", "data": None}
elif "" == password or password is None and username:
return {"code": 1002, "msg": "密码不能为空", "data": None}
elif "" == username or username is None and password:
return {"code": 1003, "msg": "用户名不能为空", "data": None}
else:
return {"code": 1004, "msg": "用户名或密码错误", "data": None}
@allure.step("输入用户名")
def input_username(user):
print("输入用户名")
return user
@allure.step("输入密码")
def input_password(pwd):
print("输入密码")
return pwd
login_success_data = [
# 测试数据
{
"case": "用户名正确, 密码正确",
"user": "Linux条",
"pwd": "123456",
"expected": {"code": 1001, "msg": "登录成功", "data": None}
}
]
login_fail_data = [
{
"case": "用户名正确, 密码为空",
"user": "linux条",
"pwd": "",
"expected": {"code": 1002, "msg": "密码不能为空", "data": None}
},
{
"case": "用户名为空, 密码正确",
"user": "",
"pwd": "linux头条",
"expected": {"code": 1003, "msg": "用户名不能为空", "data": None}
},
{
"case": "用户名错误, 密码错误",
"user": "linux",
"pwd": "linux",
"expected": {"code": 1004, "msg": "用户名或密码错误", "data": None}
}
]
username_none = [
{
"case": "缺省用户名参数",
"pwd": "123456",
"expected": {"code": 1003, "msg": "用户名不能为空", "data": None}
}
]
password_none = [
{
"case": "缺省密码参数",
"user": "linux条",
"expected": {"code": 1002, "msg": "密码不能为空", "data": None}
}
]
# 改变输出结果
ids_login_success_data = [
"测试{}用户名:{}密码{}期望值{}".
format(data["case"], data["user"], data["pwd"], data["expected"]) for data in login_success_data
]
ids_login_fail_data = [
"测试{}用户名:{}密码{}期望值{}".
format(data["case"], data["user"], data["pwd"], data["expected"]) for data in login_fail_data
]
ids_username_none = [
"测试{}密码{}期望值{}".
format(data["case"], data["pwd"], data["expected"]) for data in username_none
]
ids_password_none = [
"测试{}用户名:{}期望值{}".
format(data["case"], data["user"], data["expected"]) for data in password_none
]
@allure.feature("登