pytest二次开发:生成用例参数

embedded/2024/11/13 0:26:47/

@pytest.fixture是一个装饰器,用于声明一个fixture。Fixture是pytest中的一个核心概念,它提供了一种将测试前的准备代码(如设置测试环境、准备测试数据等)和测试后的清理代码(如恢复测试环境、删除临时文件等)与测试用例分离的方法。通过这种方式,测试用例可以更加专注于测试逻辑本身,而不是测试环境的准备和清理。

pytest使用fixture,实现接受一个函数作为输入,函数内部可以包含条件表达式、循环等复杂逻辑,并返回一个参数列表


import pytest# 直接传入数组
@pytest.fixture(params=[1,2,3])
def param_complex(request):print('--------fixture\t')print(request)print(request.param)return request.param
def test_generatePara(param_complex):print('---------param_complex------- test\t')print(param_complex)assert Truedef generate_param(a, b):params = []ouShu = []jiShu = []for i in range(a,b):if i % 2 == 0:ouShu.append(i)else:jiShu.append(i)params.append(ouShu)params.append(jiShu)return params#  01 函数执行:generate_param(2,6)在pytest解析fixture声明时执行,生成一个包含多个pytest.param对象的列表
#  02 参数化:测试用例使用param_complex_gene fixture ,pytestpytest.param对象的列表作为params的值,并为列表中的每个pytest.param对象执行一次测试用例
#  03 fixture函数:对于列表中的每个pytest.param对象,pytest都会调用param_complex_gene fixture函数一次,并将当前的pytest.param对象作为request.param传递给这个函数。然后,param_complex_gene函数返回request.param,即当前的测试参数。
@pytest.fixture(params=generate_param(2,6))
def param_complex_gene(request):print('--------fixture param_complex_gene \t')print(request)print(request.param)return request.paramdef test_generatePara1(param_complex_gene):print('---------param_complex_gene------- test\t')print(param_complex_gene)assert True

--------fixture    
<SubRequest 'param_complex' for <Function test_generatePara[1]>>
1
PASSED                        [ 20%]---------param_complex------- test    
1
--------fixture    
<SubRequest 'param_complex' for <Function test_generatePara[2]>>
2
PASSED                        [ 40%]---------param_complex------- test    
2
--------fixture    
<SubRequest 'param_complex' for <Function test_generatePara[3]>>
3
PASSED                        [ 60%]---------param_complex------- test    
3
--------fixture param_complex_gene     
<SubRequest 'param_complex_gene' for <Function test_generatePara1[param_complex_gene0]>>
[2, 4]
PASSED     [ 80%]---------param_complex_gene------- test    
[2, 4]
--------fixture param_complex_gene     
<SubRequest 'param_complex_gene' for <Function test_generatePara1[param_complex_gene1]>>
[3, 5]
PASSED     [100%]---------param_complex_gene------- test    
[3, 5]

======= Global cleanup =======
 


http://www.ppmy.cn/embedded/107190.html

相关文章

STM32基础篇:RTC × Unix时间戳 × BKP

Unix时间戳 最早是在Unix系统使用的&#xff0c;之后很多由Unix演变而来的系统也都继承了Unix时间戳的规定。目前&#xff0c;Linux、Windows、安卓这些系统&#xff0c;其底层的计时系统都是使用Unix时间戳。 Uinx时间戳&#xff08;Unix Timestamp&#xff09;定义为从UTC/…

扑捉一只耿鬼(HTML文件)

图例&#xff1a; 代码&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><title>耿鬼</title><style>body {background: #fff;font-family: Comfortaa, sans-serif;}* {box-sizing:…

滑动窗口序列(单序列双指针)9/5

一、不间断子数组(滑动窗口哈希表) 题意&#xff1a; 给你一个数组nums,现在求子数组中都有 0 < |nums[i1] - nums[i2]| < 2 。这样称一个不间断子数组。&#xff08;简而言之&#xff1a;子数组中最大值和最小值的差距必须<2&#xff09;。求不间断子数组的数量 输…

Android 14(API 级别 34)中,DexClassLoader 不再支持可写 dex/jar 文件

Android 14&#xff08;API 级别 34&#xff09;中&#xff0c;DexClassLoader 不再支持从可写文件加载 dex/jar 文件。这意味着从Android 14开始&#xff0c;你不能再使用 DexClassLoader 来动态加载位于内部存储中的dex/jar文件&#xff0c;除非这些文件被设置为只读。 解决…

2024国赛数学建模A题思路模型代码

2024国赛数学建模思路资料&#xff0c;思路获取见文末名片 数学建模感想 纪念逝去的大学数学建模&#xff1a;两次校赛&#xff0c;两次国赛&#xff0c;两次美赛&#xff0c;一次电工杯。从大一下学期组队到现在&#xff0c;大三下学期&#xff0c;时间飞逝&#xff0c;我的…

Unity数据持久化 之 二进制存储法

本文仅作笔记学习和分享&#xff0c;不用做任何商业用途 本文包括但不限于unity官方手册&#xff0c;unity唐老狮等教程知识&#xff0c;如有不足还请斧正​​ 前置知识&#xff1a;1 Byte 8 bit &#xff0c;所以0000 00001 就是一个字节&#xff0c; 该串数字转为十进制代表1…

2024.8.29 Python,排序算法,列表的append规则

1.append和 res[] nums1[1,2,3] res.append(nums1[1]) print(res)#输出[2] res.append([nums1[1]]) print(res)#输出[[2]] res.append(nums1[1:2]) print(res)#输出[[2]] res.append(nums1[1:3]) print(res)#输出[[2,3]] resnums1[1:3] print(res)#输出[2,3]也就是说&#xff…

【MATLAB源码-第164期】基于matlab的轴承故障三种谱图:细化谱,功率谱,倒谱对比分析仿真。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 轴承故障分析是一种重要的维护和监控手段&#xff0c;能够帮助工程师及时发现和解决轴承在运行中可能遇到的各种问题。在轴承故障诊断中&#xff0c;通常会使用到三种谱图分析方法&#xff1a;细化谱&#xff08;Fine Spectr…