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

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

@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 True




def 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 ,pytest将pytest.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.param

def 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.kler.cn/a/296955.html

相关文章:

  • 《粮食科技与经济》是什么级别的期刊?是正规期刊吗?能评职称吗?
  • OpenAI的Scaling Law论文笔记
  • 【小程序 - 大智慧】深入微信小程序的核心原理
  • 单例模式对比:静态内部类 vs. 饿汉式
  • 数据结构绪论
  • ArcGIS小技巧:图斑变化分析
  • [SWPUCTF 2022 新生赛]
  • MySQL图形界面 --DataGrip
  • Gitlab修改已push的历史commit信息
  • Vue 3 + Element Plus 封装单列控制编辑的可编辑表格组件
  • 深度学习中常见的损失函数
  • golang学习笔记03——gin框架的核心数据结构
  • 计算机毕业设计Python+Tensorflow股票推荐系统 股票预测系统 股票可视化 股票数据分析 量化交易系统 股票爬虫 股票K线图 大数据毕业设计 AI
  • 前端框架有哪些 如何选择和优缺点
  • JVM面试真题总结(三)
  • Adobe Sensei——自动化视频编辑、特效应用和素材增强,通过AI技术快速优化视频内容,自动修复视频质量、自动添加背景音乐或字幕
  • Centos7安装FFmpeg详细步骤(已验证成功)
  • 担心违规?害怕封号?数字人直播防封技巧全解析!
  • Swift 创建扩展(Extension)
  • Java语言基础