Allure+pytest 生成测试报告

本文介绍如何使用Allure生成美观的自动化测试报告。通过pytest框架结合Allure插件,实现测试报告的定制化展示,包括用例分层、动态描述及详细步骤说明。

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

简介:

  python 主流自动化测试报告插件有三个:HTMLTestRunner、BeautifulReport 和 Allure。HTMLTestRunner是一个比较古老的报告模板,界面也不是很好看。BeautifulReport  界面很简洁,看起来也很直观,是一款比较不错的报告插件。如果你想提升一下你的level,让你的自动化测试报告变得高大上,那么请选择 Allure 。

  Allure 是一款轻量级的开源自动化测试报告生成框架。它支持绝大部分测试框架,比如 TestNG、Junit 、pytest、unittest 等。本文主要介绍 pytest 框架结合 Allure 生成 格式统一、美观的 测试报告。

1.Allure 下载安装

mac版本:Mac下 allure的下载与配置

windows版本:

先下载allure压缩包:Allure 下载最新版本 ,下载完成之后,解压到 pytest 目录中。然后设置环境变量,简单一点就是进入 \allure-2.13.0\bin 目录执行 allure.bat 。cmd 输入 allure 查看环境变量是否设置成功。

2. allure-pytest

下载 allure-pytest 插件,用来生成 Allure 测试报告所需要的数据。

pip3 install allure-pytest

案例分析:

1、编写一段使用 pytest 框架的测试代码:

#!/usr/bin/env python
# coding=utf-8
import pytest
import allure
import os

@pytest.fixture(scope='function')
def login():
    print("登录")
    yield
    print("登录完成")

@allure.feature('加入购物车')
def test_1(login):
    '''将苹果加入购物车'''
    print("测试用例1")

@allure.feature('加入购物车')
def test_2():
    '''将橘子加入购物车'''
    print("测试用例2")

if __name__ =="__main__":
    # 执行pytest单元测试,生成 Allure 报告需要的数据存在 /temp 目录
    pytest.main(['--alluredir', './temp'])
    # 执行命令 allure generate ./temp -o ./report --clean ,生成测试报告
    os.system('allure generate ./temp -o ./report --clean') 

2、执行后生成 Allure 报告:

打开 index.html ,测试报告如下:

3、@allure 装饰器中的一些功能点:

1)想对你的用例集分层,增加可读性,可以使用以下三个装饰器,写在类或方法前面:

  • @allure.epic :敏捷里的概念,定义史诗
  • @allure.feature :用于定义被测试的功能,被测产品的需求点
  • @allure.story : 用于定义被测功能的用户场景,即子功能点
#!/usr/bin/env python
# coding=utf-8
import pytest
import allure
import os

@pytest.fixture(scope='function')
def login():
    print("登录")
    yield
    print("登录完成")

@allure.epic('这是一个测试')
@allure.feature('购物车')
@allure.story('加购商品')
def test(login):
    '''将苹果加入购物车'''
    print("测试用例")


if __name__ =="__main__":
    # 执行pytest单元测试,生成 Allure 报告需要的数据存在 /temp 目录
    pytest.main(['--alluredir', './temp'])
    # 执行命令 allure generate ./temp -o ./report --clean ,生成测试报告
    os.system('allure generate ./temp -o ./report --clean')

2)想对单个用例添加标题和用例描述,增加可读性,使用以下两个装饰器:

  • @allure.description :添加测试用例描述,参数类型为str,与使用''' '''效果类似。如果想传html,请使用 @allure.description_html
  • @allure.title :修改单个测试用例标题,支持传递关键字参数
#!/usr/bin/env python
# coding=utf-8
import pytest
import allure
import os

path = os.path.join(os.path.abspath('').replace('testcase','testcase_data\\excel'),'order.xlsx')
data_test_order_balance = Readexcel.readrows(path,'test_order_balance')


@allure.description('测试用例描述')
@allure.title('参数:{phone},{password},{money}')
@pytest.mark.parametrize('case,cityflag,phone,password,money,sourcetype,products,code', data_test_order_balance)
def test(case,cityflag,phone,password,money,sourcetype,products,code):

    print("测试用例")


if __name__ =="__main__":
    # 执行pytest单元测试,生成 Allure 报告需要的数据存在 /temp 目录
    pytest.main(['--alluredir', './temp'])
    # 执行命令 allure generate ./temp -o ./report --clean ,生成测试报告
    os.system('allure generate ./temp -o ./report --clean')

3)动态生成功能,以下方法都支持动态生成,也可以覆盖装饰器 @allure 的内容

  • allure.dynamic.feature
  • allure.dynamic.link
  • allure.dynamic.issue
  • allure.dynamic.testcase
  • allure.dynamic.story
  • allure.dynamic.title
  • allure.dynamic.description
#!/usr/bin/env python
# coding=utf-8
import pytest
import allure
import os


@allure.description('测试用例描述')
@allure.title('测试标题')
def test():
    allure.dynamic.description('动态描述')
    allure.dynamic.title('动态标题')

    print("测试用例")


if __name__ =="__main__":
    # 执行pytest单元测试,生成 Allure 报告需要的数据存在 /temp 目录
    pytest.main(['--alluredir', './temp'])
    # 执行命令 allure generate ./temp -o ./report --clean ,生成测试报告
    os.system('allure generate ./temp -o ./report --clean')

4)如果想对每个测试用例进行非常详细的步骤信息说明,提高可读性,可以使用以下两个方法:

  • allure.step :对每个测试用例进行步骤说明
  • allure.attach :输出内容

先看下 allure.attach(body, name=None, attachment_type=None, extension=None) 定义,参数如下

  • body:要显示的内容(附件)
  • name:附件名字
  • attachment_type:附件类型,是 allure.attachment_type 里面的其中一种
  • extension:附件的扩展名

也可以使用文件路径:allure.attach.file( source, body, name=None, attachment_type=None, extension=None),source为文件路径,其他参数和上述一致

#!/usr/bin/env python
# coding=utf-8
import pytest,allure,os,requests

@allure.description('测试用例描述')
@allure.title('测试标题')
def test():
    url = 'http://www.baidu.com'
    h  = requests.get(url=url)
    with allure.step('请求'):
        allure.attach('{}'.format(url),name='get请求')
    with allure.step('响应'):
        allure.attach('{}'.format(h.status_code),name='状态码')
    with allure.step('断言'):
        assert h.status_code == 200
        allure.attach('OK',name='断言')


if __name__ =="__main__":
    # 执行pytest单元测试,生成 Allure 报告需要的数据存在 /temp 目录
    pytest.main(['--alluredir', './temp'])
    # 执行命令 allure generate ./temp -o ./report --clean ,生成测试报告
    os.system('allure generate ./temp -o ./report --clean')

### 配置 Allure 命令行工具并结合 Pytest 生成测试报告 #### 环境配置 为了确保 Allure 命令行工具能够被系统识别,需要将其安装路径添加到系统的环境变量中。以下是具体的配置方法: #### Windows 系统下的配置 - 导航到 Allure 的安装目录,确保可以执行 `allure.bat` 批处理文件[^5]。 - 修改环境变量: - 打开“系统属性”对话框。 - 转到“高级系统设置”,点击“环境变量”按钮。 - 在“系统变量”部分,找到并选择 `Path` 变量,然后点击“编辑”。 -Allure 的 `bin` 目录路径(例如:`C:\allure\bin`)添加到 `Path` 变量中。 - 验证配置是否成功: - 打开命令提示符(CMD),输入以下命令检查 Allure 版本信息: ```bash allure --version ``` - 如果返回了正确的版本号,则说明环境变量配置成功[^5]。 #### Linux 系统下的配置 - 安装 Allure: 下载并解压 Allure 安装包到指定目录(如 `/data/allure`)。以下是具体步骤: ```bash $ wget https://registry.npmjs.org/allure-commandline/-/allure-commandline-2.13.0.tgz $ tar -zxvf allure-commandline-2.13.0.tgz $ rm -f allure-commandline-2.13.0.tgz $ mv package /data/allure $ chmod -R 777 /data/allure ``` - 配置软链接: 创建一个从 `/usr/bin/allure` 指向 Allure 可执行文件的软链接,以便在任何地方都可以直接调用 `allure` 命令: ```bash $ ln -s /data/allure/bin/allure /usr/bin/allure ``` - 验证配置是否成功: 使用以下命令验证 Allure 是否已正确配置: ```bash allure --version ``` 如果返回了正确的版本号,则说明配置成功[^2]。 #### PytestAllure 的集成 为了使用 PytestAllure 生成测试报告,需要完成以下步骤: 1. **安装 Allure 插件**: 在 PyCharm 控制台执行命令以安装 `allure-pytest` 插件: ```bash pip install allure-pytest ``` 或者通过 PyCharm 的插件管理功能搜索并安装 `allure-pytest` 插件[^5]。 2. **编写测试用例**: 使用 Pytest 编写测试用例,并通过装饰器或命令行参数启用 Allure 报告生成功能。例如: ```python import pytest import allure @allure.title("测试用例标题") def test_example(): assert True ``` 3. **运行测试并生成报告**: 使用以下命令运行测试并生成 Allure 报告所需的 JSON 文件: ```bash pytest --alluredir=./allure-results ``` 该命令会在当前目录下创建一个名为 `allure-results` 的文件夹,其中包含测试结果的 JSON 数据。 4. **生成 HTML 报告**: 使用以下命令将 JSON 数据转换为 HTML 格式的测试报告: ```bash allure generate ./allure-results -o ./allure-report --clean ``` 该命令会生成一个名为 `allure-report` 的文件夹,其中包含可浏览的 HTML 报告[^5]。 5. **查看报告**: 使用以下命令启动本地服务器以查看生成测试报告: ```bash allure open ./allure-report ``` 或者直接打开 `allure-report/index.html` 文件在浏览器中查看报告。 --- ### 注意事项 - 确保 Allure 的安装路径没有特殊字符或空格,这可能会导致命令解析失败。 - 如果仍然无法找到 Allure 命令,请检查路径是否正确以及是否有权限问题。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

只看不学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值