Allure+pytest功能特性详细介绍

本文全面介绍Allure测试报告工具与pytest的整合使用,包括环境配置、自定义统计类别、测试代码示例、附加信息如步骤、附件、描述等。同时,讨论了与Jenkins的集成,帮助开发者更好地理解和利用Allure的功能特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

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("登录模块")
class TestLogin(object):

    @allure.severity(allure.severity_level.BLOCKER)
    @allure.story("测试登录成功")
    @allure.title("登录成功场景-{data}")
    @pytest.mark.parametrize("data", login_success_data, ids=ids_login_succ
### 使用 Python pytest Requests YAML Allure 构建测试框架 #### 项目结构设计 为了有效地管理和维护接口自动化测试,合理的项目结构至关重要。通常情况下,项目的文件夹和文件可以按照功能模块划分如下: - `api`:用于封装 HTTP 请求为 Python 接口的方法。 - `common`:放置各种辅助性的工具类。 - `core`:核心部分,负责请求方法的封装以及关键字返回结果类的设计。 - `config`:存储配置文件,比如环境变量设置等。 - `data`:用来保存测试所需的数据集。 - `operation`:定义操作层面的关键字,可能涉及多个 API 的组合调用逻辑。 - `pytest.ini` 和 `requirements.txt` 文件分别指定 Pytest 配置参数及相关依赖项列表。 #### 安装依赖库 在根目录下的 `requirements.txt` 中列出了所有必要的第三方包名称及其版本号。要安装这些依赖,可以在终端运行命令 `pip3 install -r requirements.txt`[^5]。 #### 编写测试用例 创建具体的测试案例时,推荐采用 BDD (行为驱动开发) 或 TDD (测试驱动开发) 方式编写描述性更强的名字,并利用装饰器标记不同的特性标签以便分类执行特定类型的测试。下面是一个简单的例子展示如何基于百度搜索API编写的测试函数: ```python from api.baidu_api import BaiduApi import pytest import allure class TestBaidu(): @pytest.mark.test @allure.title("验证百度搜索功能") def test_baidu_select(self): response = BaiduApi().baidu_search_api() with allure.step('打印响应'): print(response) ``` 这段代码展示了怎样通过导入自定义模块中的类实例化对象并调用其内部方法发起网络请求;同时借助于 `@pytest.mark` 可以为单个或一组测试添加元数据属性,而 `@allure.title()` 则允许给定更直观易懂的标题说明当前正在做什么工作。 #### 执行测试与生成报告 完成上述准备工作之后就可以直接使用命令行工具启动整个流程了——只需简单输入 `pytest --alluredir=./result` 即可让 Pytest 自动寻找符合条件的所有 `.py` 文件内的测试单元加以检验并将最终的结果导出到本地磁盘上预先设定好的路径里去等待进一步分析处理。最后一步则是打开浏览器访问由 Allure 提供的服务端地址查看可视化的统计图表和其他有用的信息摘要。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值