pytest之fixture

news2024/11/28 16:49:40

fixture

      • 0、文档
      • 1、局部前置处理
      • 2、全局前置处理
      • 3、全局前置处理

0、文档

pytest-fixture
fixture

1、局部前置处理

@pytest.fixture() 装饰器用于声明函数是一个fixture,该fixture的名字默认为函数名,也可以自己指定名称(name取别名)

  1. 测试函数可以直接使用fixture名称作为输入参数,在这种情况下,fixture函数返回的fixture实例将被注入。
  2. 可以使用yield或者return关键字把fixture函数里的值传递给test函数。
  3. 测试函数可以使用多个fixture;
  4. fixture本身还可以使用其他的fixture;
@pytest.fixture(scope="function", params=[], autouse=True, ids=[], name="xxx")

参数:

  1. scope – 定义被 @pytest.fixture修饰的方法的作用域;有 “function” (默认) “class” , “module” , “package” 或 “session” 。
  2. params – 参数化实现数据驱动(可支持列表、元组、字典列表、字典元组),获取当前参数可使用 request.param。
# -*- coding: utf-8 -*-

import pytest


@pytest.fixture(scope="function", params=["hello", "hi", 123])
def ddt(request):  # 通过request接收params中的参数
    print("=====setup======")
    yield request.param  # 通过request.param获取当前使用的参数
    print("=====teardown======")


class TestDemo:

    def test_one(self):
        print("---------hello world--------")

    # 因autouse为False,故需显示引用,即测试函数可以直接使用fixture名称作为输入参数
    def test_two(self, ddt):
        print(f"--------{ddt}-------")


if __name__ == '__main__':
    pytest.main("-vs")

在这里插入图片描述
3. autouse --如果为True,则自动执行fixture,无需在测试函数使用fixture名称作为输入参数。如果为False(默认值),则需要显式引用(测试函数可以直接使用fixture名称作为输入参数)。
4. ids – 当使用params参数化时,给每一个值设置一个变量名,意义不大。
5. name --给被 @pytest.fixture修饰的方法取别名。取别名后原来的名字则无法使用。

2、全局前置处理

@pytest.fixture结合conftest.py

# -*- coding: utf-8 -*-
import pytest

def pytest_addoption(parser):
	# 自定义命令行参数
    parser.addoption('--passenger', action='store', help='passenger account')
    parser.addoption('--driver', action='store', help='driver account')


@pytest.fixture
def replace_accounts(request):
	# 获取命令行参数的值
    passenger = request.config.getoption('--passenger')
    driver = request.config.getoption('--driver')
    return (passenger,driver)

测试文件:

class TestDemo:

    # 因autouse为False,故需显示引用,即测试函数可以直接使用fixture名称作为输入参数
    def test_one(self, replace_accounts):
        p, d = replace_accounts[0], replace_accounts[1]
        print(f"==========={p}===========")
        print(f"==========={d}===========")

执行:python3 -m pytest -vs --passenger 111 --driver 222 test_666.py
在这里插入图片描述

3、全局前置处理

import importlib
import pytest


@pytest.fixture
def replace_param(request):
    case_name = request.param.get('case_name')
    passenger_phone = request.param.get('passenger_phone')
    driver_phone = request.param.get('driver_phone')
    module_name = "tests.test_{}".format(case_name)
    test_module = importlib.import_module(module_name)  # 通过importlib模块中的import_module函数动态导入指定测试用例模块
    setattr(test_module, "passenger_phone", passenger_phone)  # 用setattr函数来动态修改测试用例中的参数值
    setattr(test_module, "driver_phone", driver_phone)
    return test_module.test_case  # fixture返回修改后的测试用例函数

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CBAM: Convolutional Block Attention Module论文总结和代码实现

论文:https://arxiv.org/pdf/1807.06521.pdf 中文版:CBAM: Convolutional Block Attention Module中文翻译 源码:https://github.com/Jongchan/attention-module 目录 一、论文的出发点 二、论文的主要工作 三、CBAM模块的具体实现 四…

【C++系列P5】‘类与对象‘-三部曲——[对象特殊成员](3/3)

前言 大家好吖,欢迎来到 YY 滴 C系列 ,热烈欢迎! 【 类与对象-三部曲】的大纲主要内容如下: 如标题所示,本章是【 类与对象-三部曲】三章中的第三章节——对象&成员章节,主要内容如下: 目录…

1723_PolySpace Bug Finder命令行执行探索

全部学习汇总: GreyZhang/g_matlab: MATLAB once used to be my daily tool. After many years when I go back and read my old learning notes I felt maybe I still need it in the future. So, start this repo to keep some of my old learning notes servral …

小兔鲜--项目总结3

目录 结算模块-地址切换交互实现 地址切换交互需求分析 打开弹框交互实现 地址激活交互实现 订单模块-生成订单功能实现 支付模块-实现支付功能 支付业务流程 支付模块-支付结果展示 支付模块-封装倒计时函数 理解需求 实现思路分析 会员中心-个人中心信息渲染 分页…

【JavaSE】Java基础语法(二十六):Collection集合

文章目录 1. 数组和集合的区别2. 集合类体系结构3. Collection 集合概述和使用【应用】4. Collection集合的遍历【应用】5. 增强for循环【应用】 1. 数组和集合的区别 相同点 都是容器,可以存储多个数据不同点 数组的长度是不可变的,集合的长度是可变的 数组可以存基本数据类型…

【C++系列P4】‘类与对象‘-三部曲——[类](2/3)

前言 大家好吖,欢迎来到 YY 滴 C系列 ,热烈欢迎! 【 类与对象-三部曲】的大纲主要内容如下: 如标题所示,本章是【 类与对象-三部曲】三章中的第二章节——类章节,主要内容如下: 目录 一.类 1.…

CodeForces..学习读书吧.[简单].[条件判断].[找最小值]

题目描述: 题目解读: 给定一组数,分别是 “时间 内容”,内容分为00,01,10,11四种,求能够得到11的最小时间。 解题思路: 看似00,01,10&#xff0…

完整卸载office以及重装office 2021

完整卸载office以及重装 一.背景 之前很早安装的word最近发现打开,编辑等操作都很卡,而且占用的CPU很多,20%左右,而在网上搜索了一些结果无法解决问题后,决定卸载重装 二. 卸载的建议方法 直接参考官方链接从PC卸载…

华为OD机试之租车骑绿岛(Java源码)

租车骑绿岛 题目描述 部门组织绿岛骑行团建活动。租用公共双人自行车,每辆自行车最多坐两人,最大载重M。 给出部门每个人的体重,请问最多需要租用多少双人自行车。 输入描述 第一行两个数字m、n,分别代表自行车限重,部…

k8s 对外服务之 ingress|ingress的对外暴露方式|ingress http,https代理|ingress nginx的认证,nginx重写

k8s 对外服务之 ingress|ingress的对外暴露方式|ingress http,https代理|ingress nginx的认证,nginx重写 一 Ingress 简介二 Ingress 组成三 ingress 暴露服务的方式四 部署 nginx-ingress-controller4.1 修改 ClusterRole 资源配置4.2 DaemonSetHostNet…

STM32HAL库RS485-ModBus协议控制伺服电机

STM32HAL库RS485-ModBus协议控制伺服电机 一个月前,接手了一个学长的毕设小车,小车采用rs485通信的modbus协议驱动轮毂电机,与往常我学习的pwm控制电机方法大相径庭,在这里以这篇博客记录下该学习过程。 小车主要架构 电机型号 …

Python期末复习题库(上)——“Python”

小雅兰期末加油冲冲冲!!! 1. (单选题) Python源程序的扩展名为( A ) A. py B. c C. class D. ph 2. (单选题) 下列( A )符合可用于注释Python代码。 A. # B. */ C. // D. $ 3. (单选题)下列…

SMARTPHONE PLATFORM st解决方案

智能手机是最常用的计算设备。 它们展示了强大的硬件功能和复杂的操作系统,支持高级功能和人工智能应用、互联网和云访问、图像和视频采集、游戏以及语音通话和短信等核心电话功能。 要执行如此多样的应用,智能手机必须包含许多设备,包括大量…

一、电路分析的变量

点我回到主目录 ------------------------------------------------------------------------------------------------------------------------- 目录 1.电流 2.电压 3.功率 4.关联参考方向 5.电路吸收或发出功率的判断 1.电流 •电流 单位A(安培…

vue基于Python的图书商城销售系统qo85w

系统以浏览器/服务器模式即B/S模板式为基础。本系统使用MySQL数据库,利用Python开发的操作系统;主要的功能有个人中心、用户管理、图书资讯管理、图书类型管理、图书信息管理、爬虫管理、留言板管理、系统管理、订单管理等组成。 本文首先介绍了现代化图书销售系统管…

2023电工杯B题全保姆论文讲解手把手教程 人工智能影响评价

更新:电工杯B题全保姆论文成品教程,手把手教你完成高质量成品 这次b题是这一道问卷分析题目,是我最擅长的题目之一了,问卷分析看起来简单,实际上没那么那简单,考验的是我们能不能把数据描述清楚&#xff0…

2023哈佛大学博士后/访问学者研究班一览

哈佛大学是全球顶尖的高等教育机构之一,其所拥有的丰富资源和卓越师资吸引了来自全球各地的优秀学者前来攻读博士学位或作为访问学者进行研究。而博士后访问学者研究班则是哈佛大学提供给这些博士后访问学者的一个重要平台。博士后访问学者研究班是一个跨学科的研究…

echarts 被封装后多次复用,图表被覆盖,解决方法

场景:为了方便样式统一,封装了一个盒子,其中包含echarts,option是从父组件传来的 问题: 多个父级页面使用这个盒子后,发现只有第一个盒子展示图表,但展示的是最后一个图片的样式,其他…

【数据结构】如何应用堆解决海量数据的问题

堆(Heap数据结构堆在计算机科学中有着广泛的应用,今天来介绍两种堆的应用:堆排序、Top-k问题🍉 堆排序 ​ 堆排序是一种基于堆数据结构的排序算法。它的基本思想是,将待排序的序列构建成一个大根堆(或小根堆&#xff…

三展齐发,DBF户外展、高博会、健身展隆重开幕,火爆现场燃炸鹏城!

5月25日,深圳建设国家体育消费试点城市系列活动,第四届DBF深圳国际户外运动博览会,DBF深圳国际高尔夫运动博览会暨深圳国际健身运动博览会(以下简称DBF运动户外生活展)在深圳国际会展中心5.7号馆盛大举办!开…