预习笔记04-Allure生成测试报告

  • allure框架介绍
    1)轻量级、灵活,支持多语言、多平台 的测试报告工具;
    2)可提供详尽的测试报告、步骤、log;
    3)可提供high level统计报告;
    4)Java语言开发的,支持pytest、JavaScript、PHP、ruby等;
    5)可以集成到Jenkins。
    官网:https://demo.qameta.io/allure
    文档:http://allure.qatools.ru/

  • allure安装
    1)安装allure工具
    ①下载zip包:文档 2.1.4 - Maven Central
    ②解压→进入bin目录→运行allure.bat
    ③把bin目录加入PATH环境变量
    2)命令行安装插件:pip install allure-pytest

  • 收集结果 生成报告
    1)将用例执行结果收集到指定文件中
    pytest [测试文件.py] -vs --alluredir=./result
    2)方式1:执行命令 临时在线查看测试报告 allure serve ./result
    (本地会启动一个web服务)image
    方式2:
    ①将用例执行结果生成到report路径
    allure generate ./result -o ./report/ --clean(覆盖路径加–clean)
    allure open -h 10.94.54.45 -p 61002 ./report/ (方便其他人打开我本地服务查看报告)

  • allure常用特性

  1. 在报告中看到测试功能,子功能或场景,测试步骤,附加信息(数据/文本/图片/视频/网页)
    解决: @feature @story @step
@allure.feature("登录模块") #feature可添加在 类/方法 上方
class TestLogin():
    @allure.story("登录成功") #story可添加在 类/方法 上方
    def test_login_success(self):
        with allure.step("点击登录后登录成功"):
            print("这是登录:测试用例-登录成功")
            pass

    @allure.story("密码缺失")
    def test_login_failure(self):
        with allure.step("点击用户名"):
            print("输入用户名")
        with allure.step("点击密码"):
            print("输入密码")
        print("点击登录")
        with allure.step("点击登录失败之后登录失败"):
            assert "1" == 1
            print("登录失败")

  1. 关联测试用例-testcase
TEST_CASE_LINK = 'http://www.baidu.com'

@allure.testcase(TEST_CASE_LINK, '用户登录成功')
def test_login_success():
    pass

  1. 划分重要性级别 - @severity
    image

1)在方法,函数和类上方添加标记
@allure.severity(allure.severity_level.CRITICAL)
2)执行命令
pytest -vs [测试文件.py] --allure-severities normal,critical

@allure.severity(allure.severity_level.NORMAL)
class TestClassWithNormalSeverity(object):

    def test_inside_the_normal_severity_class(self): # 默认为normal级别
        pass

    @allure.severity(allure.severity_level.CRITICAL)
    def test_inside_the_normal_severity_class_with_critical(self):
        pass

还可以在Pycharm中执行该命令

  1. @attach-附加文本、链接、图片、视频等信息
#附加文本
@allure.title("添加文本信息")
def test_attach_text():
    allure.attach("这是一个纯文本", attachment_type=allure.attachment_type.TEXT)

#附加html代码块
def test_attach_html():
    allure.attach("<body>这是一段htmlbody块</body>", attachment_type=allure.attachment_type.HTML)

#附加图片
def test_attach_photo():
    # r"file":为了避免\xx是一个转义字符而导致的错误
    allure.attach.file(r"D:\AutoTest\study_allure\testcases\110.jpg", name="这是一张图片", attachment_type=allure.attachment_type.JPG)

#附加视频
def test_attach_video():
    allure.attach.file(r"D:\AutoTest\study_allure\testcases\Video_2021-09-01.MP4", name="这是一条视频", attachment_type=allure.attachment_type.MP4)