当前位置: 首页 > article >正文

15、pytest的fixture调用fixture

官方实例

# content of test_append.py
import pytest

# Arrange
@pytest.fixture
def first_entry():
    return "a"
    
# Arrange
@pytest.fixture
def order(first_entry):
    return [first_entry]
    
def test_string(order):
    # Act
    order.append("b")
    
    # Assert
    assert order == ['a','b']
# content of test_reuse_fixture.py
import pytest

# Arrange
@pytest.fixture
def first_entry():
    return "a"
    
# Arrange
@pytest.fixture()
def order(first_entry):
    return [first_entry]
    
def test_string(order):
    # Act
    order.append("b")
    
    # Assert
    assert order == ["a","b"]
    
def test_int(order):
    # Act
    order.append(2)
    
    # Assert
    assert order == ["a",2]

解读与实操

pytest最大的优势之一是其极其灵活的fixture系统。它允许我们将复杂的测试需求简化成更简单和有组织的功能,我们只需要让每个功能描述它们所依赖的东西。

在这里插入图片描述

pytest的fixture系统如此强大的原因之一是,它使我们能够定义一个可以反复重用的通用步骤,就像使用普通函数一样。两个不同的测试可以请求相同的fixture,并让pytest从该fixture为每个测试提供各自的结果。

这对于确保测试不受彼此影响非常有用。我们可以使用这个系统来确保每个测试都获得自己的新一批数据,并且从一个干净的状态开始,这样它就可以提供一致的、可重复的结果。

在这里插入图片描述

场景应用

fixture可以调用其它fixture;重复使用fixture时,每个测试都会获得不受影响的一批数据。在登录类应用时比较方便,创建一个获取token的fixture,其它测试函数重复使用这个fixture,获取鉴权。后面会说明fixture作用域,设置为类级或会话级,可以保证多次测试只请求了一个token。


http://www.kler.cn/a/159261.html

相关文章:

  • 什么是MySQL,有什么特点
  • 数据研发基础 | 什么是流批一体
  • 【PIP】完整指南:Python `pip install` 和 `pip uninstall` 命令详解与清理技巧
  • 查询DBA_FREE_SPACE缓慢问题
  • 《Java核心技术 卷I》用户界面AWT事件继承层次
  • js像循环数组那样循环一个数字,Array.from()
  • 一部,即全部,十年超越之作一加12售价4299元起
  • C++ 函数详解
  • 高级搜索——伸展树Splay详解
  • 5-Tornado入门、程序的原理图、tornado不能使用同步代码的演示
  • Day14——数据结构和集合源码
  • Codeforces Round 913 (Div. 3)(A~G)
  • 网络安全威胁——中间人攻击
  • 牛客算法心得——kotori和素因子(dfs)
  • RK356x U-Boot研究所(命令篇)3.12 mtd命令的用法
  • WeakMap
  • Python实现FA萤火虫优化算法优化卷积神经网络回归模型(CNN回归算法)项目实战
  • 17.认识下Docker之docker的核心原理(2)
  • 商务助理个人简历10篇
  • 轻量封装WebGPU渲染系统示例<40>- 多层材质的Mask混合(源码)
  • 解决终Linux端中文乱码问题及设置UTF-8编码
  • HarmonyOS4.0开发应用——【ArkUI组件使用】
  • 第二十一章 网络通信
  • 软著项目推荐 深度学习的水果识别 opencv python
  • Java数据结构之《最短路径》(难度系数100)
  • Android Native Crash 收集