首页 > 其他分享 >读后笔记 -- Pytest框架与自动化应用 Chapter4:DDT 和 参数传递

读后笔记 -- Pytest框架与自动化应用 Chapter4:DDT 和 参数传递

时间:2024-01-15 21:37:49浏览次数:27  
标签:parametrize -- Chapter4 DDT expected pytest test input mark

4.2 参数化应用

1. 单一参数化 / 多参数化

# content of test_mark_parametrize.py
mport pytest

@pytest.mark.parametrize("test_case", [1, 2, 3, 'orange', 'apple'])
def test_string(test_case):  # 单一参数化
    print(f"\n我们的测试数据:{test_case}")

@pytest.mark.parametrize("test_input, expected", [("3 + 5", 8),
                                                  ("2 + 5", 7),
                                                  ("7 * 5", 30),
                                                  ])
def test_eval(test_input, expected):    # 多参数化
    # eval将字符串str当成有效的表达式来求值并返回计算结果
    assert eval(test_input) == expected

2. 多个参数化

# content of test_multi.py
"""多个参数化,将会变成组合的形式,示例将产生 3*2 = 6 个组合"""
import pytest

@pytest.mark.parametrize('test_input', [1, 2, 3])
@pytest.mark.parametrize('test_output, expected', [(1, 2), (3, 4)])
def test_multi(test_input, test_output, expected):
    pass

3. pytestmark 实现参数化

# content of test_module.py
import pytest

# 通过对 pytestmark 赋值,参数化一个测试模块
pytestmark = pytest.mark.parametrize('test_input, expected', [(1, 2), (3, 4)])

def test_module(test_input, expected):
    assert test_input + 1 == expected

 


4.4 argnames 参数

1. argnames 与测试方法中的参数关系

# 1) 测试方法未声明, mark.parametrize 中声明
# if run this only, report "function uses no argument 'expected'
@pytest.mark.parametrize('input, expected', [(1, 2)])
def test_sample1(input):
    assert input + 1 == 1
# 2) 测试方法参数声明的范围小于 mark.parametrize 中声明的范围:parametrize 定义了 expected,又在方法入参中赋值 expected,将出错
# if run this only, report "function already takes an argument 'expected' with a default value"
@pytest.mark.parametrize('input, expected', [(1, 2)])
def test_sample2(input, expected = 2):
    assert input + 1 == 1
# content of test_mark_param_sub.py
import pytest

@pytest.fixture
def expected3():
    return 2

# 3) test_sample3 没有定义 expected,test_sample3 的参数 expected3 可以从 fixture 中获取
@pytest.mark.parametrize('input3', [(1)])
def test_sample3(input3, expected3):
    assert input3 + 1 == expected3

@pytest.fixture
def expected4():
    return 2

# 4)parametrize() 的参数化值覆盖了 fixture 的值
@pytest.mark.parametrize('input4, expected4', [(1, 2), [2, 3], set([3, 4])])
def test_sample4(input4, expected4):
    assert input4 + 1 == expected4

 


4.5 argvalues 参数

1

2

 

标签:parametrize,--,Chapter4,DDT,expected,pytest,test,input,mark
From: https://www.cnblogs.com/bruce-he/p/17966180

相关文章

  • 【C系列综合1】游戏达人I
    #include<stdio.h>#include<stdlib.h>#include<math.h>typedefstructa{ inttime[1000]; intjoy[1000];}fin;intmain(){ intN,T,n; finx; intall; inti,j; intaa[101][2002]={{0}};//aa则为在背包还有j容积时,前i个数所可容纳的最大愉悦度 while(1){ all=0; ......
  • CodeForces 1500C Matrix Sorting
    洛谷传送门CF传送门做了好久。怎么会是呢。题目的操作可以看成,求出一些关键字,使得\(B\)矩阵的行是由\(A\)按照这些第\(1\)关键字、第\(2\)关键字一直到第\(k\)关键字,最后还有一个原来所在行下标的关键字,从小到大排序。肯定是从排好序的\(B\)矩阵入手。首先任意找......
  • STM32
    STM321、keil的配置以及vscode的配置略2、stm32的命名规则todo以下以stm32lf103ze为例。3、点亮第一个小灯​ 开启时钟、设置输入/输出模式、给小灯的位赋值0。开启时钟开启时钟使用到的寄存器为RCC_APB2ENR,32位,高16位为保留位。第二位IOPA控制IO端口A的输入输出使能......
  • SparkStreaming 连接 Kafka数据源
    本文的前提条件:SparkStreaminginJava参考地址:SparkStreaming+KafkaIntegrationGuide(Kafkabrokerversion0.10.0orhigher)1.添加POM依赖<dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>......
  • 如何统计接口自动化覆盖率?
    Python可以适用coveragepy来统计代码行覆盖率,使用方式coveragerun-mpytest 运行之后生成新的.coverage文件,这个文件以二进制形式保存着我们覆盖率的数据,如何读取覆盖率数据呢?通过cmdline命令执行coveragereport可以查看覆盖率数据。可通过coveragereport-m查看哪......
  • U-Boot Sandbox 基础
    U-BootSandbox是一个仿真平台,可以用来调试u-boot的非架构相关代码。平台:ubuntu22.04forx86_641.开发环境Ubuntu22.04forx86_64.$sudoaptupdate$sudoaptinstallbuild-essentialflexbisongawktexinfolibsdl2-devpython3-setuptoolspython3-devswig......
  • 【OpenFeign】【使用问题】OpenFeign 里如何调用 form-data 接口或者 MultipartFile
    1 前言今儿有个需求涉及到文件上传的东西,关键是OpenFeign去调用,当然最后底牌我也可以创建普通的HTTP请求或者RestTemplate自己请求是不是也行,但是本人这个倔驴型性格,偶尔也会跟自己犟犟,就是要用OpenFeign把它搞出来。首先我有两个这样的接口://客户导入接口@PostMa......
  • 蓝绿发布、滚动发布、灰度发布,有什么区别 ?
    蓝绿发布   蓝绿部署中,一共有两套系统:一套是正在提供服务系统(也就是上面说的旧版),标记为“绿色”;另一套是准备发布的系统,标记为“蓝色”。两套系统都是功能完善的,并且正在运行的系统,只是系统版本和对外服务情况不同。正在对外提供服务的老系统是绿色系统,新部署的系统是蓝色......
  • Zynq7020 使用 Video Processing Subsystem 实现图像缩放
    1、前言没玩过图像缩放都不好意思说自己玩儿过FPGA,这是CSDN某大佬说过的一句话,鄙人深信不疑。。。目前市面上主流的FPGA图像缩放方案如下:1:Xilinx的HLS方案,该方案简单,易于实现,但只能用于Xilinx自家的FPGA;2:非纯Verilog方案,大部分代码使用Verilog实现,但中间的fifo或ram等使用了IP,导致......
  • 大师学SwiftUI第6章 - 声明式用户界面 Part 3
    安全域视图SwiftUI还内置了创建安全文本框的视图。这一视图会把用户输入的字符替换成点以及隐藏敏感信息,比如密码。SecureField(String,text:Binding):该初始化方法创建一个安全输入框。第一个参数定义占位文本,text参数为存储用户插入值的绑定属性。实现方式与TextField视图相同,我......