pytest+allure生成测试报告

官方文档

http://allure.qatools.ru/

https://docs.qameta.io/allure/#

Allure框架介绍

灵活的、轻量级的测试报告工具

支持多平台:windows、mac、linux

支持多语言:java、python、PHP、ruby

提供详尽的测试报告、测试步骤、日志

可与jenkins集成

安装

windows:

  • https://github.com/allure-framework/allure2/releases下载allure2.7.zip包

  • 解压->进入bin目录->运行allure.bat

  • 把bin目录加入PATH环境变量

mac:

  • brew install allure

我们使用python语言,还需要安装allure-pytest,安装命令:pip install allure-pytest

运行

第一步:生成测试结果数据,并保存在指定目录

pytest [测试文件] --alluredir=./result/

第二步:生成html格式的测试报告(有2种方式)

  • 方式1:在线查看报告,直接打开默认浏览器
    allure serve ./result/

  • 方式2:在本地生成报告,并启动一个tomcat服务(有2个命令)
    allure generate ./result/ -o ./report/ --clean(注:覆盖路径加–clean)
    allure open -h 127.0.0.1 -p 8883 ./report/

添加描述

我们希望在测试报告中添加文字描述,使我们的报告更加直观,比如测试的功能模块、子功能名称、测试步骤、测试附加信息等,此时会用到allure的feature、story、step、attach装饰器

test_allure.py

import pytest
import allure


@allure.feature("登录模块")
class TestLogin:
    @allure.story("登录成功")
    def test_login_success(self):
        print("登录成功")

    @allure.story("登录失败")
    def test_login_fail(self):
        print("登录失败")

    @allure.story("密码缺失")
    def test_input_pwd(self):
        with allure.step("输入用户名"):
            print("输入用户名")
        with allure.step("点击登录按钮"):
            print("点击登录按钮")

    def test_attach_text(self):
        allure.attach("我是文本",attachment_type=allure.attachment_type.TEXT)

    def test_attach_html(self):
        allure.attach("我是htmlbody内容", "html",attachment_type=allure.attachment_type.TEXT)

    def test_attach_image(self):
        allure.attach.file("./image/DCIM(3).jpg",name="image",attachment_type=allure.attachment_type.JPG)

运行指定功能的用例

命令行中执行以下命令

pytest -vs test_allure.py --allure-stories '登录成功'

运行指定级别的用例

#TRIVIAL:不重要,必填项无提示,或提示不规范
@allure.severity(allure.severity_level.TRIVIAL)
def test_trivial():
    print("trivial")

#MINOR:不太重要,界面错误或UI需求不符
@allure.severity(allure.severity_level.MINOR)
def test_minor():
    print("minor")

#NORMAL:普通,数值计算错误
@allure.severity(allure.severity_level.NORMAL)
def test_normal():
    print("normal")

#CRITICAL:严重,功能点缺失
@allure.severity(allure.severity_level.CRITICAL)
def test_critical():
    print("critical")

#BLOCKER:阻塞,中断缺陷,程序无响应,无法执行下一步操作
@allure.severity(allure.severity_level.BLOCKER)
def test_blocker():
    print("blocker")
===================================================
#命令行中运行
pytest -s -v test_severity.py --alluredir=./result --allure-severities normal,critical

关联用例和bug

关联用例

@allure.link("http://www.baidu.com",name="百度")
def test_with_link():
    print("加了测试用例链接")

关联bug

#issue里传入bug的id,以下示例的bug的id=1
@allure.issue("1","这是个bug")
def test_with_link():
    print("加了BUG链接")
===============================
#命令行执行以下命令
pytest test_case.py --allure-link-pattern=issue:http://www.mytestissue/issue/{
     } --alluredir=result

pycharm中添加allure参数

如果我们不想在命令行中敲命令,而是想在pycharm里直接执行,就要在pycharm中添加pytest的运行参数

pytest+allure生成测试报告_第1张图片
 
pytest+allure生成测试报告_第2张图片

你可能感兴趣的:(pytest测试框架,python)