pytest中@pytest.fixture常用顺序function

ops/2024/10/20 12:47:39/

ytest中@pytest.fixture用法讲解

    • 1、测试函数开始之前
    • 2、执行测试函数:
    • 3、测试函数结束后:

备注:内容来自chatGPT

pytest 中,@pytest.fixture 是一个非常强大的功能,用于设置测试所需的环境和状态。它可以通过 scope 参数控制其生命周期。以下是 scope=“function” 时的执行顺序以及一些详细解释。

scope 的类型

pytest.fixture 的 scope 参数可以有以下几种取值:

  • function:每个测试函数都会调用该 fixture。
  • class:每个测试类的实例共享该 fixture。
  • module:每个模块内的测试共享该 fixture。
  • session:整个测试会话共享该 fixture。
scope="function" 的执行顺序

当 scope 设置为 function 时,fixture 的执行顺序如下:

1、测试函数开始之前

@pytest.fixture 装饰器定义的 fixture 会在测试函数执行前被调用。
如果 fixture 依赖于其他 fixture,依赖的 fixture 会被先执行。

2、执行测试函数:

  • 一旦 fixture 被调用,控制流会转到被测试的函数。
  • 测试函数运行时,可以直接使用 fixture 的返回值。

3、测试函数结束后:

测试函数执行完毕后,fixture 代码中的清理代码会被执行(如果定义了 yield,则在 yield 后的代码会执行)。
图示
这里用文字描述一下顺序,图形化展示比较复杂,但我可以用一种更直观的方式来解释:

+-------------------+
|  Fixture Setup    | <--- 执行 @pytest.fixture 定义的代码
|  (setup code)     |
+-------------------+|V
+-------------------+
|   Test Function    | <--- 执行测试函数
|  (test code)      |
+-------------------+|V
+-------------------+
|  Fixture Teardown  | <--- 执行清理代码
|  (teardown code)   |
+-------------------+

例子
下面是一个示例,展示了如何使用 @pytest.fixture:

```bash
import pytest@pytest.fixture(scope="function")
def sample_fixture():# setup codeprint("Setting up fixture")yield "data"  # 这里是 fixture 的返回值# teardown codeprint("Tearing down fixture")def test_one(sample_fixture):print(f"Test One: {sample_fixture}")def test_two(sample_fixture):print(f"Test Two: {sample_fixture}")
执行示例
运行上述代码时,你会看到以下输出,表明了执行顺序:```python
Setting up fixture
Setting up fixture
Test One: data
Tearing down fixture
Setting up fixture
Test Two: data
Tearing down fixture

总结
scope=“function” 的 fixture 每个测试函数都会独立执行一次。

  • 在执行测试之前会先执行 setup 代码,测试执行后再执行 teardown 代码。
  • 如果有多个 fixture 互相依赖,pytest 会自动处理它们的执行顺序。

希望这能帮助你更好地理解 pytest.fixture 的执行顺序!如果你还有其他问题或者需要更详细的解释,随时告诉我。

在这里插入图片描述


http://www.ppmy.cn/ops/126982.html

相关文章

SpringBoot框架下的汽车票在线预订系统

4系统概要设计 4.1概述 本系统采用B/S结构(Browser/Server,浏览器/服务器结构)和基于Web服务两种模式&#xff0c;是一个适用于Internet环境下的模型结构。只要用户能连上Internet,便可以在任何时间、任何地点使用。系统工作原理图如图4-1所示&#xff1a; 图4-1系统工作原理…

数据结构_day5

目录 7.树 7.1 特性 7.1.1 什么是树 7.1.2 关于树的一些术语 7.2 二叉树 7.2.1 什么是二叉树 7.2.2 二叉树性质&#xff08;重点&#xff09; 7.2.3 满二叉树和完全二叉树 7.2.4 二叉树的存储结构 7.3 二叉树的链式存储 7.4 层次遍历 哈夫曼树 Huffman 图 1.什么是图 2.图的基本…

【Hive】3-HiveSQL 数据定义语言(DDL)

HiveSQL 数据定义语言&#xff08;DDL&#xff09; SQL中DDL语法的作用 数据定义语言(Data Definition Language&#xff0c;DDL)&#xff0c;是SQL语言集中对数据库内部的对象结构进行创建&#xff0c;删除&#xff0c;修改等的操作语言&#xff0c;这些数据库对象包括datab…

C语言入门笔记:1.1 搭建开发环境

文章目录 一、C51与C251的区别二、安装Keil MDK三、C语言&#xff1a;菜鸟教程 一、C51与C251的区别 <1> 指令集数量不一样&#xff0c;C251有268条指令&#xff0c;C51有111条指令&#xff0c;前者可向下兼容后者的指令集&#xff0c;即Binary模式。 <2> 从指令种…

136-KC705E增强版基于FMC接口的 Kintex-7 XC7K325T PCIeX8 接口卡

一、板卡概述 本板卡基于Xilinx公司的FPGAXC7K325T-2FFG900 芯片&#xff0c;pin_to_pin兼容FPGAXC7K410T-2FFG900 &#xff0c;支持PCIeX8、64bit DDR3容量2GByte&#xff0c;HPC的FMC连接器&#xff0c;板卡支持各种接口输入&#xff0c;软件支持windows&#xff0c;Linux驱…

SqlDbx连接oracle(可用)

解压SqlDbx.zip,将SqlDbx放到C:盘根目录 1.Path里面增加&#xff1a;C:\SqlDbx Path是为了找tnsnames.ora 2.增加系统变量&#xff1a;ORACLE_HOME&#xff0c;路径&#xff1a;C:\SqlDbx ORACLE_HOME是为了找oci.dll 3.用sqlDbx查询时&#xff0c;如果出现中文乱码&#xf…

C07.L10.STL之队列.字母队列

题目描述 有一些小写字母&#xff0c;陆续来到一个队列。如果刚来的字母和队列头的字母相同&#xff0c;就删除它和队列头的字母&#xff0c;否则就加入到队列尾部。 请编程输出最后的队列中的字母。 输入格式 一个由小写字母组成字符串&#xff0c;长度范围在 [1,1000]。 …

前端杂学录(十)

1.axios 的底层实现 1. XMLHttpRequests 在浏览器环境中&#xff0c;Axios 使用 XMLHttpRequest 对象来发送请求。这是一个古老的 Web API&#xff0c;用于在浏览器中进行异步 HTTP 请求。 2. Node.js 的 http 模块 在 Node.js 环境中&#xff0c;Axios 使用 Node.js 的 ht…