pytest parametrize fixture_参数化数据

pytest parametrize fixture_参数化数据前言当某个接口中的一个字段,里面规定的范围为1-5,你5个数字都要单独写一条测试用例,就太麻烦了,这个时候可以使用pytest.mark.parametrize装饰器可以实现测试用例参数化。官方示

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

前言

当某个接口中的一个字段,里面规定的范围为1-5,你5个数字都要单独写一条测试用例,就太麻烦了,这个时候可以使用pytest.mark.parametrize装饰器可以实现测试用例参数化。
 

官方示例

下面是一个典型的范例,检查特定的输入所期望的输出是否匹配:

# test_expectation.py 
import pytest 

@pytest.mark.parametrize("test_input, expected", [("3+5", 8), ("2+4", 6), ("6*9", 42),]) 
def test_eval(test_input, expected): 
  assert eval(test_input) == expected

测试用例传参需要用装饰器@pytest.mark.parametrize,里面写两个参数

  • 第一个参数类型是字符串,多个参数中间用逗号隔开,这里填写的就是参数化的字段
  • 第二个参数类型是list,多组数据用元祖类型,这里填写的就是参数化的数据,通常我们把数据都会存放在yaml或者json文件中

装饰器@parametrize定义了三组不同的(test_input, expected)数据,test_eval则会使用这三组数据执行三次:

test_1.py::test_eval[3+5-8] 
test_1.py::test_eval[2+4-6] 
test_1.py::test_eval[6*9-42] PASSED                                       [ 33%]PASSED                                       [ 66%]FAILED                                      [100%]
test_1.py:10 (test_eval[6*9-42])
54 != 42

Expected :42
Actual   :54
<Click to see difference>

test_input = '6*9', expected = 42

    @pytest.mark.parametrize("test_input, expected", [("3+5", 8), ("2+4", 6), ("6*9", 42),])
    def test_eval(test_input, expected):
>       assert eval(test_input) == expected
E       assert 54 == 42

test_1.py:13: AssertionError

 

参数组合(笛卡尔积)

可以对一个函数使用多个parametrize的装饰器,这样多个装饰器的参数会组合进行调用:

import pytest 

@pytest.mark.parametrize("x", [0, 1]) 
@pytest.mark.parametrize("y", [2, 3]) 
def test_foo(x, y): 
  print("测试数据组合:x->%s, y->%s" % (x, y))

测试结果

collecting ... collected 4 items

test_example.py::test_foo[2-0] PASSED                                    [ 25%]测试数据组合:x->0, y->2

test_example.py::test_foo[2-1] PASSED                                    [ 50%]测试数据组合:x->1, y->2

test_example.py::test_foo[3-0] PASSED                                    [ 75%]测试数据组合:x->0, y->3

test_example.py::test_foo[3-1] PASSED                                    [100%]测试数据组合:x->1, y->3
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/165646.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • labview示波器波形采集_labview制作简易示波器教程

    labview示波器波形采集_labview制作简易示波器教程前些日子,需要保存示波器图像,可惜身边没有U盘,于是在电脑上安装了keysightBenchVue,可惜不是免费的,只能用一个月;电脑上装有Labview软件,何不自己写一个呢?下载了keysight相关示波器的编程手册,写好命令序列,可是每次打开传过来的png截屏文件,都有问题,图片软件总是显示打不开。查找了NI论坛,终于找到了问题所在,原来是截图中的一个字符需要替换。截图命令如下…

    2022年10月12日
    4
  • string和stringbuffer的区别面试题_stringbuffer转为string

    string和stringbuffer的区别面试题_stringbuffer转为stringString和StringBuffer的区别String:是对象不是原始类型。为不可变对象,一旦被创建,就不能修改它的值。对于已经存在的String对象的修改都是重新创建一个新的对象,然后把新的值保存进去。String是final类,即不能被继承。StringBuffer:是一个可变对象,当对它进行修改的时候不会像String那样重新建立对象。它只…

    2022年4月19日
    46
  • pycharm每次运行需选择interpreter_pycharm怎么配置python环境变量

    pycharm每次运行需选择interpreter_pycharm怎么配置python环境变量在运行时就出现了下图情况,也不知道咋回事,之前删了些以为没用的文件夹,估计是删错了,环境没了。关闭后上面窗口后打开Settings→projectInterpreter选项你里面可能有多个,可以删掉重新添加一个有可能会遇到目录不为空的情况,因为你之前可能创建过这个文件路径啥的复制下面的路径,进去删掉原来的路径里的文件夹。然后再点击ok,重新创建一个…

    2022年8月27日
    9
  • android scaleanimation 动画方向,Animation 动画详解(一)——alpha、scale、translate、rotate、set的xml属性及用法…[通俗易懂]

    android scaleanimation 动画方向,Animation 动画详解(一)——alpha、scale、translate、rotate、set的xml属性及用法…[通俗易懂]一、概述Android的animation由四种类型组成:alpha、scale、translate、rotate,对应android官方文档地址:《AnimationResources》alpha渐变透明度动画效果scale渐变尺寸伸缩动画效果translate画面转换位置移动动画效果rotate画面转移旋转动画效果下面我们逐个讲讲每个标签的属性及用法。动作定义文件应该存放在res/anim文…

    2022年10月9日
    3
  • 特征选择的几种方法[通俗易懂]

    目录1过滤法(Filter)1.1方差选择法1.2相关系数法1.3卡方检验1.4互信息法1.5relief算法2包裹法(Wrapper)2.1递归特征消除法2.2特征干扰法3嵌入法(Embedded)3.1基于惩罚项的特征选择法3.2基于树模型的特征选择法4特征选择方法的优…

    2022年4月8日
    54
  • springboot项目启动原理_相关滤波器的基本原理

    springboot项目启动原理_相关滤波器的基本原理一、springboot启动原理及相关流程概览springboot是基于spring的新型的轻量级框架,最厉害的地方当属自动配置。那我们就可以根据启动流程和相关原理来看看,如何实现传奇的自动配置二、springboot的启动类入口用过springboot的技术人员很显而易见的两者之间的差别就是视觉上很直观的:springboot有自己独立的启动类(独立…

    2025年10月29日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号