conftest.py 配置

章节目录:

    • 一、概述
    • 二、场景说明
    • 三、代码示例
      • 3.1 最外层
      • 3.2 商品模块测试
      • 3.3 订单模块测试
      • 3.4 用户模块测试
      • 3.5 执行结果
    • 四、关于 conftest.py 配置 fixture
    • 五、结束语

一、概述

“conftest.py” 是 pytest 测试框架中的一个特殊的配置文件,它能够为整个测试环境提供一些共享的配置。

  • onftest.py 文件通常会存放在测试目录的根目录中,或者是测试目录的子目录中,以便于对应的配置可以在整个测试环境中起作用。
  • fixtures 是 conftest.py 文件最常见的用法,用于共享数据设置处理测试所需的资源
  • 每个 fixture 函数通常都有一个固定的名称,并且可以在测试用例中通过参数注入的方式使用它们。

二、场景说明

假设我们有三个业务模块,分别为商品模块、订单模块、用户模块。它们都有各自的测试用例,其中订单用户模块需要拿到登录成功返回的 token 才能进行测试。

  • 调用示意图

  • 示例目录说明

三、代码示例

3.1 最外层

  • conftest.py:
import pytest@pytest.fixture(scope="session")
def login():print("### 登录系统! ###")name = "jan"token = "111"yield name, tokenprint("### 退出系统! ###")@pytest.fixture(autouse=True)
def get_token(login):name, token = loginprint(f"===(全局 conftest.py),每个测试函数执行前都自动调用 get_token fixture===")
  • demo_run.py:
import pytestif __name__ == '__main__':pytest.main(["-s", "../test-demo/"])

3.2 商品模块测试

  • test_cases.py:
def test_case1():print(">>>无需登录的商品模块:执行商品查询测试>>>")

3.3 订单模块测试

  • conftest.py:
import pytest@pytest.fixture(scope="module")
def open_order_management_system(login):name, token = loginprint(f"===(order 目录下的 conftest.py),得到token{token},用户{name}打开订单管理系统. ===")
  • test_cases.py:
def test_case1(open_order_management_system):print(">>>进入订单管理:执行创建订单测试>>>")def test_case2(open_order_management_system):print(">>>进入订单管理:执行查询订单测试>>>")

3.4 用户模块测试

  • test_cases.py:
def test_case1(login):name, token = loginprint(f">>>(全局 conftest.py)得到token:{token},进入用户管理:执行创建用户测试>>>")

3.5 执行结果

import pytestif __name__ == '__main__':pytest.main(["-s", "../test-demo/"])
# ### 登录系统! ###
#
# ===(全局 conftest.py),每个测试函数执行前都自动调用 get_token fixture===
# >>>无需登录的商品模块:执行商品查询测试>>>
#
# ===(order 目录下的 conftest.py),得到token111,用户jan打开订单管理系统. ===
# ===(全局 conftest.py),每个测试函数执行前都自动调用 get_token fixture===
# >>>进入订单管理:执行创建订单测试>>>
#
# ===(全局 conftest.py),每个测试函数执行前都自动调用 get_token fixture===
# >>>进入订单管理:执行查询订单测试>>>
#
# ===(全局 conftest.py),每个测试函数执行前都自动调用 get_token fixture===
# >>>(全局 conftest.py)得到token:111,进入用户管理:执行创建用户测试>>>
#
# ### 退出系统! ###

四、关于 conftest.py 配置 fixture

  • pytest 会默认读取 conftest.py 里面的所有 fixture 。
  • conftest.py 文件名称是固定的,不能改动。
  • conftest.py 只对同一个 package 下的所有测试用例生效。
  • 不同目录可以有自己的 conftest.py,一个项目中可以有多个 conftest.py 。
  • 测试用例文件中不需要手动 import conftest.py,pytest 会自动查找

五、结束语


“-------怕什么真理无穷,进一寸有一寸的欢喜。”

微信公众号搜索:饺子泡牛奶

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/310517.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2023博客年终总结、你好2024

2023博客年终总结、你好2024 1、2023博客年终总结2、你好2024 1、2023博客年终总结 2023写了100篇博客,祝愿我们的人生都能圆满达到100分。 2023行将结束,有幸接触了一本书 《你怎样过一天,就怎样过一生》 作者 七纤 2、你好2024 你好2024…

今天工作状态怎么变化的?看看设计模式--状态模式

状态模式 状态模式(State):当一个对象的内在状态变化时允许改变其行为,这个对象看起来像是改变了其类。 状态模式主要解决的是当控制一个对象状态转换的条件表达式过于复杂时的情况。把状态的判断逻辑转移到表示不同状态的一系列…

PHP-MySQL图书管理系统(附源代码)

本系统采用phpstudy开发平台,采用PHP和MySQL数据库进行开发,开发工具为HBuilder。phpStudy是一个PHP调试环境的程序集成最新的 ApachePHPMySQLphpMyAdmin,一次性安装,无须配置即可使用,是非常方便、好用的PHP调试环境。&#xff…

计算机网络-动态路由

网络层协议:ip,ospf,rip,icmp共同组成网络层体系 ospf用于自治系统内部。 一个路由器或者网关需要能够支持多个不同的路由协议,以适应不同的网络环境。特别是在连接不同自治系统的边缘路由器或边界网关的情况下&#…

在线H5网页版植物大战僵尸游戏源代码

源码介绍 HTML5植物大战僵尸网页版游戏源码,直接把源码上传到服务器就能使用和访问

Tomcat与Servlet是什么关系

Tomcat与Servlet是什么关系 Apache Tomcat和Servlet之间存在密切的关系,可以说它们是一对密切合作的组件。下面是它们的关系: Tomcat是Servlet容器: Tomcat是一个开源的、轻量级的Servlet容器。Servlet容器是一个Web服务器扩展,用…

JVM的生命周期

1.加载(Loading): 在加载阶段,JVM会找到并加载Java字节码文件。加载阶段分为三个步骤:通过类的全限定名找到对应的字节码文件,创建一个与该类相关的Class对象,将类的静态数据结构存储在方法区中…

[Angular] 笔记 20:NgContent

chatgpt: 在Angular中&#xff0c;NgContent是用于内容投影&#xff08;Content Projection&#xff09;的一个重要概念。它允许你在一个组件中插入内容&#xff0c;并将这些内容投影到另一个组件中。 当你在一个组件中使用<ng-content></ng-content>标签时&…

00TD I 无论男孩女孩都要尽情打扮

宝藏时尚单品&#xff0c;怎么穿都好看系列 经典宽松版型&#xff0c;韩系慵懒范儿 时尚吸睛蓝色&#xff0c;青春活力满满 轻松好搭配&#xff0c;秒变时尚小达人

sklearn学习的一个例子用pycharm jupyter

环境 运行在jupyter 进行开发。即一个WEB端的开发工具。能适时显示开发的输出。后缀用的是ipynb.pycharm也可以支持。但也要提示按装jupyter. 或直接用andcoda 这里我们用pycharm进行项目创建 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple jupyterlab pip ins…

如何处理并下载Sentinel-5数据

SENTINEL-5是欧洲空间局&#xff08;European Space Agency&#xff0c;ESA&#xff09;Copernicus计划中的一颗地球观测卫星。SENTINEL-5的主要任务是监测大气成分&#xff0c;特别是臭氧、氮二氧化物、二氧化硫、甲烷和其他气体的分布。这些观测对于了解大气污染、气候变化和…

【用户增长】引言:浅析游戏运营用户增长概念

1 游戏发行运营中的主要职能&#xff1a; ​ 一、发行运营通识l 运营介绍&#xff1a;职能分工、发行运营流程、职业发展能力及要求l 品类认知&#xff1a;行业品类布局、品类用户画像、运营节奏及特性&#xff0c;包含不同品类核心打法及长线运营思路l 海外运营&#xff1a;海…