pytest教程之Allure生成测试报告

优点:

Allure Framework是一种灵活的轻量级多语言测试报告工具,不仅可以以简洁的Web报告形式非常简洁地显示已测试的内容,也允许参与开发过程的每个人从日常测试中提取最大程度的有用信息。从开发/质量保证的角度来看,Allure报告可以缩短常见缺陷的生命周期:可以将测试失败划分为bug和损坏的测试,还可以配置log,step,fixture,attachments,timings,历史记录以及Bug跟踪系统…

缺点:

拓展功能需要在测试用例上加装饰器

1. 安装插件

pip3 install allure-pytest
brew install allure

2. 测试用例demo

import pytest
import allure


@allure.feature('购物车功能')  # 用feature说明产品需求,可以理解为JIRA中的Epic
class TestShoppingTrolley(object):
    @allure.story('加入购物车')  # 用story说明用户场景,可以理解为JIRA中的Story
    def test_add_shopping_trolley(self):
        login('刘春明', '密码')  # 步骤1,调用“step函数”
        with allure.step("浏览商品"):  # 步骤2,step的参数将会打印到测试报告中
            allure.attach('笔记本', '商品1')  # attach可以打印一些附加信息
            allure.attach('手机', '商品2')
        with allure.step("点击商品"):  # 步骤3
            pass
        with allure.step("校验结果"):  # 步骤4
            allure.attach('添加购物车成功', '期望结果')
            allure.attach('添加购物车失败', '实际结果')
            assert 'success' == 'failed'

    @allure.story('修改购物车')
    def test_edit_shopping_trolley(self):
        pass

    @pytest.mark.skipif(reason='本次不执行')
    @allure.story('删除购物车中商品')
    def test_delete_shopping_trolley(self):
        pass


@allure.step('用户登录')  # 将函数作为一个步骤,调用此函数时,报告中输出这个步骤,我把这样的函数叫“step函数”
def login(user, pwd):
    print(user, pwd)

2. 如何运行生成报告

# 步骤一
# 运行生成测试数据,加上参数--clean-alluredir每次清空历史数据
import pytest


if __name__ == '__main__':
    pytest.main(["-v","-s","./test_allure.py","--alluredir=./allure","--clean-alluredir"])
    
# 步骤二
# 将测试数据生成测试报告页面
# 步骤二方法1,执行如下命令将步骤一中的测试数据生成报告html页面。然后再result目录下右键index.html选择open in browser打开报告页面
allure generate ./result/ -o ./report/ --clean
# 步骤二方法2,执行如下命令,将会启动服务直接浏览器打开报告页面
allure serve allure

3. 测试报告效果图

pytest教程之Allure生成测试报告_第1张图片

  • Overview:总览

  • Categories:类别,默认是分了failed和error,凡是执行结果是其中一个的都会被归到类里面,可以通过这里快捷查看哪些用例是failed和error的

  • Suites:测试套件,就是所有用例的层级关系,可以根据package、module、类、方法来查找用例

  • Graphs:测试结果图形化,包括用例执行结果的分布图,优先级,耗时等

  • Timeline:可以看到测试用例精确的测试时序(执行顺序),包括执行时间

  • Behaviors:行为驱动,根据epic、feature、story来分组测试用例(后面会讲到)

  • Packages:这就是按照package、module来分组测试用例了

你可能感兴趣的:(Python,Pytest)