allure定制化报告

2022-04-12 14:38:44 浏览数 (1)

先把怎么使用用文字说明一下,方便大家查询。

这里就不每次都截图了,最后我们放一个整体报告截图。

1、史诗(项目名称):

代码语言:javascript复制
@allure.epic("项目名")

2、特性(模块名称):

代码语言:javascript复制
@allure.feature("模块名称")

3、分组(接口名称):

代码语言:javascript复制
@allure.story("接口名称:登录")

4、测试用例标题:

方式一:【适用于一个方法对应一个用例】

代码语言:javascript复制
@allure.title("用例标题")

方式二:写在方法里【适用于一个方法对应多个用例——数据驱动

代码语言:javascript复制
allure.dynamic.title("测试用例标题")

5、用例优先级【默认normal】

代码语言:javascript复制
block:中断缺陷:致命bug:用户数据丢失、系统崩溃
critical:临界缺陷:严重bug:功能未实现
normal:一般缺陷:一般bug:条件查询有误,数据未响应
minor:次要缺陷:提示bug:颜色、页面变形、错别字
trivial:轻微bug:必填项没有提示
代码语言:javascript复制
@allure.severity(allure.severity_level.级别)

如果一个下所有用例级别都是相同的,可以在类上面进行标记

6、用例描述

方式一

代码语言:javascript复制
@allure.description("用例描述")

方式二:在代码里

代码语言:javascript复制
allure.dynamic.description("用例描述")

方式三:在代码里添加注释

代码语言:javascript复制
"""
注释内容
"""

7、用例链接

接口地址【有点问题】

代码语言:javascript复制
@allure.link(url="url", name="接口地址")

bug地址

代码语言:javascript复制
@allure.issue("url", name="bug地址")

测试用例地址

代码语言:javascript复制
@allure.testcase("url", name="用例地址")

8、测试步骤

方法一:装饰器,当一个方法里有多个步骤时就不好用了

代码语言:javascript复制
@allure.step("步骤一")

方法二:方法里写

代码语言:javascript复制
with allure.step("步骤一"):

同时写时装饰器名称就会变成文件夹/折叠名,然后下面的步骤都在这个文件夹/折叠里。一般用不着这样,去掉装饰器方式就行。

9、附件定制

代码语言:javascript复制
allure.attach()
# 参数
body:附件内容
name:文件名
attachment_type:文件扩展名

web/ui自动化:

代码语言:javascript复制
with open("/Users/macbook/Desktop/file.jpg", mode="rb") as fp:
    allure.attach(body=fp.read(), name="selenium错误截图", attachment_type=allure.attachment_type.JPG)

接口自动化:

代码语言:javascript复制
allure.attach(body="api.weixin.qq.com", name="请求地址", attachment_type=allure.attachment_type.TEXT)
allure.attach(body="/api/get_token", name="请求路径", attachment_type=allure.attachment_type.TEXT)

当做了封装以后,以上截图或者接口返回信息都可以通过调用返回值进行填充,这里只是举例子。

代码

代码语言:javascript复制
# coding: utf-8
import os

import allure
import pytest

@allure.epic("项目名称:allure报告定制化")
@allure.feature("模块名称:商品管理模块")
class TestReg():

    @pytest.fixture(scope="function", autouse=True)
    def test_login(self):
        print("先登录")
        yield
        print("退出")

    @allure.story("接口名称:登录")
    @allure.title("用例1")
    @allure.severity(allure.severity_level.MINOR)
    @allure.description("用例描述test_01")
    @allure.link(url="api.weixin.qq.com", name="接口地址")
    @allure.issue(url="api.weixin.qq.com", name="bug地址")
    @allure.testcase(url="api.weixin.qq.com", name="用例地址")
    @allure.step("测试步骤文件夹名")
    def test_01(self):
        with allure.step("步骤一"):
            print("操作步骤一")
        with allure.step("步骤二"):
            print("操作步骤二")
        with allure.step("步骤三"):
            print("操作步骤三")
        # 接口自动化错误截图
        allure.attach(body="api.weixin.qq.com", name="请求地址", attachment_type=allure.attachment_type.TEXT)
        allure.attach(body="/api/get_token", name="请求路径", attachment_type=allure.attachment_type.TEXT)
        # web/UI自动化错误截图
        with open("/Users/macbook/Desktop/file.jpg", mode="rb") as fp:
            allure.attach(body=fp.read(), name="selenium错误截图", attachment_type=allure.attachment_type.JPG)


    @allure.story("接口名称:登录")
    @allure.title("用例2")
    @allure.severity(allure.severity_level.CRITICAL)
    def test_02(self):
        """
        这样也能加用例描述
        test_02
        :return:
        """
        print("登录后第二个操作")


@allure.epic("项目名称:allure报告定制化")
@allure.feature("模块名称:商品管理模块2")
class TestReg1():

    @pytest.fixture(scope="function", autouse=True)
    def test_login1(self):
        print("先登录")
        yield
        print("退出")

    @allure.story("接口名称:登录2")
    @allure.title("方法名1")
    def test_011(self):
        print("登录后的操作")

    @allure.story("方法名/模块名称2")
    @allure.title("方法名")
    def test_021(self):
        print("登录后第二个操作")

报告截图

注意:从报告可以看出,相同的模块名称会自动放到一个分类折叠下

我们在项目中建议大家用allure.dynamic.xxx模式写在代码里面,不然做数据驱动时多个用例的名称都是一样的。

0 人点赞