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

pytest 单元测试前后置处理

文章目录

  • 方法1 setup/teardown
  • 方法2 fixture 夹具
  • 方法3 conftest.py

测试用例执行前后的一些处理动作,也叫夹具。以下介绍使用前后置操作的几种方法。
 

方法1 setup/teardown

setup,每个测试用例执行前要进行的处理。
teardown,每个测试用例执行结束后要进行的处理。

import pytestclass TestMyProject:def setup(self):print("每个测试用例执行前的初始化")def test_001(self):print("测试用例1")def test_002(self):print("测试用例2")def teardown(self):print("每个测试用例执行结束后的收尾")

 
setup_class/teardown_class
每个测试类初始化前后的操作,如创建日志对象,连接数据库等操作。


class TestMyProject:def setup_class(self):# 如连接数据库print("测试类初始化前的操作")def setup(self):print("每个测试用例执行前的初始化")def test_001(self):print("测试用例1")def test_002(self):print("测试用例2")def teardown(self):print("每个测试用例执行结束后的收尾")def teardown_class(self):# 如关闭数据库print("测试类执行后的操作")

 

方法2 fixture 夹具

实现全部或者部分测试用例的前后置处理。

结构及参数

# scope 被标记方法的作用域(函数、类、模块、包)
# params 被标记方法的参数化
# autouse 是否自动使用
# name 别名
@pytest.fixture(scope, params, autouse, ids, name)
def my_func():print("前置操作")# yield分割前后置操作yieldprint("后置操作")

 
autouse=False:
非自动使用时,要将my_func传入指定的测试用例(谁需要传给谁);
自动使用且scope="function"时, 将my_func前后置操作用于所有的测试用例。
scope="class"时(autouse=True),每个测试类执行前后置操作。
scope="module"时(autouse=True),每个模块中,执行一次前后置操作。

# 定义夹具操作
@pytest.fixture(scope="function", autouse=False, name="别名")
def my_func():print("前置操作")# yield分割前后置操作yieldprint("后置操作")class TestMyProject:def test_001(self, my_func): # 仅001测试用例有前后置操作,非自动使用要传入print("测试用例1")def test_002(self):# 没有前后置操作print("测试用例2")

 
params参数使用:
可以给被fixture装饰的函数传入参数。
类型为list/tuple、字典组成的列表&元组

import pytest
import timeparams = [{"name": "jack","age": 23}, {"name": "lucy","age": 18}]# 夹具操作
# ids 设置每个参数的变量名
@pytest.fixture(scope="function", params=params, ids=["dict_1", "dict_2"], autouse=False, name="func_lauf")
def func(request): # 参数必须使用request且调用param属性拿到参数值print("前置操作...")yield request.param  # 抛出值后执行外部函数体;外部执行结束再执行yield后面的部分print("前置操作...")class TestWebClass:# 部分测试用例使用夹具,传入函数的返回值# 变量必须与函数别名相同(无别名则用函数名)def test_001(self, func_lauf): # func_lauf 为夹具别名,执行时传入夹具的返回值print("test 001 成功")print("********** 夹具返回值:", func_lauf)def test_002(self):time.sleep(3)assert 1 == 1

 

方法3 conftest.py

  1. conftest.py需要结合fixture一起使用,将fixture装饰的函数放入该模块,实现全局的使用;
  2. conftest.py放入测试用例的同级目录;
  3. 当前包的子包可以使用当前包的conftest.py;
  4. 测试用例优先查找本包的conftest.py;
  5. 测试用例使用时,直接传入夹具即可,不需要导入;

例子:

http://www.lryc.cn/news/11324.html

相关文章:

  • 汽车安全硬件扩展 AUTOSAR SHE SecureHardwareExtensions
  • 2023年美国大学生数学建模C题:预测Wordle结果建模详解+模型代码
  • 5、HAL库驱动W25Qxx
  • git rebase 洐合(变基)
  • Kubernetes 1.18学习笔记
  • AJAX技术
  • 华为OD机试 - 最大排列(JS)
  • Prometheus Docker安装及监控自身
  • 点云处理PCL常用函数与工具
  • FyListen 在 MVP 架构中的内存优化表现
  • Qt代码单元测试以及报告生成
  • vscode构建Vue3.0项目(vite,vue-cli)
  • 【2023】华为OD机试真题Java-题目0215-优雅数组
  • 通过Prowork每日自动提醒待处理工作任务
  • Linux自定义系统服务
  • mongodb lambda 查询插件
  • C++设计模式(16)——责任链模式
  • springmvc+jsp电影院购票售票选座推荐网站java ssm
  • ASEMI高压MOS管4N65SE,4N65SE参数,4N65SE特征
  • 第46章 自定义静态与数据库动态授权依赖注入的定义实现
  • Go语言面试题
  • Kubernetes入门级教程
  • 15个顶级思维模型
  • 外贸谷歌优化,外贸google SEO优化费用是多少?
  • 华为OD机试 - 统计匹配的二元组个数(Python) | 机试题算法思路
  • Java 日志简介
  • HTTPS协议原理---详解六个加密方案
  • 纯css实现坤坤经典动作-“铁山靠”
  • Linux 操作系统原理 — NUMA 体系结构
  • cesium学习记录01