蟑螂恶霸的博客 蟑螂恶霸的博客
首页
  • Web自动化
  • 自动化测试框架
  • 接口自动化
  • 测试面试题
  • 技术文档
  • GitHub技巧
  • 博客搭建
  • Vue
  • JavaScript
  • Nginx
  • 自动化测试
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

蟑螂恶霸

一个爱折腾的程序员,什么都想试试!
首页
  • Web自动化
  • 自动化测试框架
  • 接口自动化
  • 测试面试题
  • 技术文档
  • GitHub技巧
  • 博客搭建
  • Vue
  • JavaScript
  • Nginx
  • 自动化测试
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • web自动化

  • 自动化测试框架

  • 接口自动化测试

  • 测试面试题

  • Pytest

    • 快速入门和基础讲解
    • assert断言详细使用
    • setup和teardown的详细使用
    • fixture的详细使用
    • 测试用例执行后的几种状态
    • conftest.py的详细讲解
    • skip、skipif跳过用例
    • 使用自定义标记mark
    • 参数化@pytest.mark.parametrize
    • fixture 传参数 request的详细使用
    • 失败重跑插件pytest-rerunfailures的详细使用
    • 测试结果生成HTML报告插件之pytest-html的详细使用
    • 重复执行用例插件之pytest-repeat的详细使用
    • 配置文件pytest.ini的详细使用
    • 多重校验插件之pytest-assume的详细使用
    • 分布式测试插件之pytest-xdist的详细使用
    • pytest-xdist分布式测试的原理和流程
    • 超美测试报告插件之allure-pytest的基础使用
      • 官方介绍
      • 个人介绍
      • 环境配置
      • 安装插件
      • 快速入门
        • 最外层的conftest.py
        • 最外层的test_1.py
        • test_51job包下的conftest.py
        • test51job包下的testcase1.py
        • testtoutiao包下的testcase2.py
        • test_weibo包下的conftest.py
        • testweibo包下的testcase3.py
        • 执行命令
        • 生成出来的结果
        • 要在测试完成后查看实际报告,需要使用Allure命令行来让测试结果生成报告
      • 查看suites(函数级别的测试用例)
      • 查看suites(类级别的测试用例)
      • 查看测试用例详情
      • Allure报告结构
    • 我们需要掌握的allure特性
    • allure的特性,@allure.step()、allure.attach的详细使用
    • allure的特性,@allure.description()、@allure.title()的详细使用
    • allure的特性,@allure.link()、@allure.issue()、@allure.testcase()的详细使用
    • allure 打标记之 @allure.epic()、@allure.feature()、@allure.story() 的详细使用
    • allure 环境准备
    • allure.severity 标记用例级别
    • 清空 allure 历史报告记录
    • allure 命令行参数
    • 参数化 parametrize + @allure.title() 动态生成标题
    • 详解 allure.dynamic 动态生成功能
    • 使用 pytest-xdist 分布式插件,如何保证 scope=session 的 fixture 在多进程运行情况下仍然能只运行一次
  • 自动化测试
  • Pytest
蟑螂恶霸
2022-07-22
目录

超美测试报告插件之allure-pytest的基础使用

# 官方介绍

  1. Allure Framework是一种灵活的轻量级多语言测试报告工具,不仅可以以简洁的Web报告形式非常简洁地显示已测试的内容,也允许参与开发过程的每个人从日常测试中提取最大程度的有用信息
  2. 从开发/质量保证的角度来看,Allure报告可以缩短常见缺陷的生命周期:可以将测试失败划分为bug和损坏的测试,还可以配置log,step,fixture,attachments,timings,历史记录以及与TMS的集成以及Bug跟踪系统,因此负责任的开发人员和测试人员将掌握所有信息
  3. 从管理人员的角度来看,Allure提供了一个清晰的“全局”,涵盖了已涵盖的功能,缺陷聚集的位置,执行时间表的外观以及许多其他方便的事情
  4. Allure的模块化和可扩展性确保您始终能够微调某些东西,以使Allure更适合您

# 个人介绍

  1. 对于管理层来说,测试报告当然是越直观、简洁、数据清晰越好,而Allure就满足以上这么多点,而且很好的和pytest集成了
  2. 相比于pytest-html来说,Allure的报告真的是十全十美鸭!!
  3. 唯一不足的就是,拓展功能需要在测试用例集上加装饰器

# 环境配置

https://www.cnblogs.com/poloyy/p/13886651.html (opens new window)

# 安装插件

pip3 install allure-pytest -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
1

# 快速入门

这是运行代码的包结构

# 是项目文件夹名称
15allure
│  conftest.py
│  test_1.py
│  __init__.py
│              
├─test_51job
│  │  conftest.py
│  │  test_case1.py
│  │  __init__.py 
│          
├─test_toutiao
│  │  test_case2.py
│
├─test_weibo
│  │  conftest.py
│  │  test_case3.py
│  │  __init__.py 
│  
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

# 最外层的conftest.py

# 外层conftest.py
@pytest.fixture(scope="session")
def login():
    print("====登录功能,返回账号,token===")
    name = "testyy"
    token = "npoi213bn4"
    yield name, token
    print("====退出登录!!!====")
1
2
3
4
5
6
7
8

# 最外层的test_1.py

import pytest


@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}")
1
2
3
4
5
6
7
8
9

# test_51job包下的conftest.py

import pytest


@pytest.fixture(scope="module")
def open_51(login):
    name, token = login
    print(f"###用户 {name} 打开51job网站###")
1
2
3
4
5
6
7

# test_51job包下的test_case1.py

from time import sleep

import pytest


@pytest.mark.parametrize("n", list(range(5)))
def test_case2_01(open_51, n):
    sleep(1)
    print("51job,列出所有职位用例", n)


@pytest.mark.parametrize("n", list(range(5)))
def test_case2_02(open_51, n):
    sleep(1)
    print("51job,找出所有python岗位", n)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

# test_toutiao包下的test_case2.py

from time import sleep

import pytest


@pytest.mark.parametrize("n", list(range(5)))
def test_no_fixture(login, n):
    sleep(1)
    print("==没有__init__测试用例,我进入头条了==", login)
1
2
3
4
5
6
7
8
9

# test_weibo包下的conftest.py

import pytest


@pytest.fixture(scope="function")
def open_weibo(login):
    name, token = login
    print(f"&&& 用户 {name} 返回微博首页 &&&")
1
2
3
4
5
6
7

# test_weibo包下的test_case3.py

from time import sleep

import pytest


@pytest.mark.parametrize("n", list(range(5)))
class TestWeibo:
    def test_case1_01(self, open_weibo, n):
        sleep(1)
        print("查看微博热搜", n)

    def test_case1_02(self, open_weibo, n):
        sleep(1)
        print("查看微博范冰冰", n)
1
2
3
4
5
6
7
8
9
10
11
12
13
14

# 执行命令

要使Allure能够在测试执行期间收集测试结果,只需添加 --alluredir 选项,并提供指向应存储结果的文件夹的路径

pytest -n auto --alluredir=allure
1

# 生成出来的结果

可以看到,这不是我们想要的结果,一堆json、txt文件....

# 要在测试完成后查看实际报告,需要使用Allure命令行来让测试结果生成报告

allure serve allure
1

然后就会自动在默认浏览器中显示生成的报告

# 查看suites(函数级别的测试用例)

从包名-模块名-测试用例

# 查看suites(类级别的测试用例)

从包名-模块名-类名-测试用例

# 查看测试用例详情

  • parameters:如果用了 @pytest.mark.parametrize ,在右侧的parameters是可以看到传了什么参数和对应的值
  • set up:调用fixture的前置操作
  • tear down:调用fixture的后置操作

# Allure报告结构

  • Overview:总览

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

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

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

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

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

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

本文转自 https://www.cnblogs.com/poloyy/p/12712616.html (opens new window),如有侵权,请联系删除。

上次更新: 2022/10/15, 15:19:25
pytest-xdist分布式测试的原理和流程
我们需要掌握的allure特性

← pytest-xdist分布式测试的原理和流程 我们需要掌握的allure特性→

最近更新
01
实现定时任务数据库配置
06-09
02
SQL Server连接
02-22
03
RSA加密工具类
02-22
更多文章>
Theme by Vdoing | Copyright © 2022-2023 蟑螂恶霸 | Blog
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式