Python测试框架pytest(25)
测试报告Allure
简介、安装、示例、报告结构
目录
- 1、简介
- 2、安装
- 3、示例
- 4、报告结构
1、简介
1、Allure 框架是一个灵活的轻量级多语言测试报告工具,它不仅以简洁的 web 报告形式展示了测试内容,而且允许参与开发过程的每个人从日常测试执行中提取最大限度的有用信息。
2、从 dev/qa 的角度来看,Allure 报告缩短了常见缺陷的生命周期:测试失败可以分为 bug 和中断的测试,还可以配置日志、步骤、固定装置、附件、计时、历史记录以及与 TMS 和 bug 跟踪系统的集成,因此负责任的开发人员和测试人员将掌握所有信息。
3、从管理者的角度来看,Allure 提供了一个清晰的"大图",说明了哪些特性已经被覆盖,缺陷聚集在哪里,执行时间表是什么样子,以及许多其他方便的事情。Allure 的模块化和可扩展性保证您始终能够微调某些东西,以使 Allure 更适合您。
2、安装
一、命令行安装:
在命令行中运行以下命令进行安装:
代码语言:javascript复制pip install allure-pytest
或者(使用国内的豆瓣源,数据会定期同步国外官网,速度快。)
代码语言:javascript复制pip install allure-pytest -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
二、配置环境变量(可选):
Allure 是一个命令行工具,可以下载后进行环境变量配置。
下载地址:
https://github.com/allure-framework/allure2/releases
1、将下载的文件进行解压。
2、配置环境变量
Windows:
代码语言:javascript复制(1)复制路径如:D:allure-2.13.6bin
(2)环境变量-》path新增环境编辑-》添加D:allure-2.13.6bin -》保存
Mac:
代码语言:javascript复制(1)复制路径如:/Users/wangmeng/Documents/allure-2.13.6
(2)命令行输入sudo vi ~/.bash_profile
(3)添加内容,保存退出:
export ALLURE_HOME=/Users/wangmeng/Documents/allure-2.13.6
export PATH=$PATH:$ALLURE_HOME/bin
(4)命令行输入(使环境变量生效)source ~/.bash_profile
3、示例
项目目录结构:
根目录下conftest.py文件
脚本代码:
代码语言:javascript复制#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
微信公众号:AllTests软件测试
"""
import pytest
@pytest.fixture(scope="session")
def login():
print("===登录,返回:name,token===")
name = "AllTests"
token = "123456qwe"
yield name, token
print("===退出===")
根目录下test_case.py文件
脚本代码:
代码语言:javascript复制#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
微信公众号:AllTests软件测试
"""
import pytest
from time import sleep
@pytest.mark.parametrize("n", list(range(5)))
def test_get_info(login, n):
sleep(1)
name, token = login
print("===获取用户个人信息===", n)
print(f"用户名:{name}, token:{token}")
test_baidu包下的conftest.py文件
脚本代码:
代码语言:javascript复制#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
微信公众号:AllTests软件测试
"""
import pytest
@pytest.fixture(scope="module")
def open_baidu(login):
name, token = login
print(f"===用户 {name} 打开baidu===")
test_baidu包下的test_case1.py文件
脚本代码:
代码语言:javascript复制#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
微信公众号:AllTests软件测试
"""
import pytest
from time import sleep
@pytest.mark.parametrize("n", list(range(5)))
def test_case1_1(open_baidu, n):
sleep(1)
print("===baidu 执行测试用例test_case1_1===", n)
@pytest.mark.parametrize("n", list(range(5)))
def test_case1_2(open_baidu, n):
sleep(1)
print("===baidu 执行测试用例test_case1_2===", n)
test_weibo文件夹下的test_case2.py文件
脚本代码:
代码语言:javascript复制#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
微信公众号:AllTests软件测试
"""
import pytest
from time import sleep
@pytest.mark.parametrize("n", list(range(5)))
def test_case2_no_fixture(login, n):
sleep(1)
print("===weibo 没有__init__测试用例,执行测试用例test_case2_no_fixture===", login)
test_douyin包下的conftest.py文件
脚本代码:
代码语言:javascript复制#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
微信公众号:AllTests软件测试
"""
import pytest
@pytest.fixture(scope="function")
def open_douyin(login):
name, token = login
print(f"===用户 {name} 打开douyin===")
test_douyin包下的test_case3.py文件
脚本代码:
代码语言:javascript复制#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
微信公众号:AllTests软件测试
"""
import pytest
from time import sleep
@pytest.mark.parametrize("n", list(range(5)))
class TestDouyin:
def test_case3_1(self, open_douyin, n):
sleep(1)
print("===douyin 执行测试用例test_case3_1===", n)
def test_case3_2(self, open_douyin, n):
sleep(1)
print("===douyin 执行测试用例test_case3_2===", n)
执行命令:
添加参数 --alluredir 选项,并提供指向测试结果的文件夹路径
如:
代码语言:javascript复制pytest -n auto --alluredir=allure
运行结果:
在指定的allure文件夹下,生成一大堆.json和.txt文件
要想查看测试结果报告,需要再执行allure命令来生成测试报告。
执行命令:
代码语言:javascript复制allure serve allure
之后自动打开默认浏览器显示测试报告。
4、报告结构
- Overview:总览。
- Categories:类别,默认是分了 failed 和 error,凡是执行结果是其中一个的都会被归到类里面,可以通过这里快捷查看哪些用例是 failed 和 error 的。
- Suites:测试套件,就是所有用例的层级关系,可以根据 package、module、类、方法来查找用例。
- Graphs:测试结果图形化,包括用例执行结果的分布图,优先级,耗时等。
- Timeline:可以看到测试用例精确的测试时序(执行顺序),包括执行时间。
- Behaviors:行为驱动,根据 epic、feature、story 来分组测试用例。
- Packages:按照 package、module 来分组测试用例。
报告可进行不同语言的切换(默认为英文)
查看Suites(函数级别的测试用例)
包名-模块名-测试用例
查看Suites(类级别的测试用例)
包名-模块名-类名-测试用例
查看测试用例详情
Parameters:如果用了 @pytest.mark.parametrize,可以看到传了什么参数和对应的值。
Set up:调用 fixture 的前置操作。
Tear down:调用 fixture 的后置操作。
stdout:输出的信息。