Using parametrize for keyword arguments in pytest(对pytest中的关键字参数使用parametrize)
本文介绍了对pytest中的关键字参数使用parametrize的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在学习pytest,并尝试使用pytest.mark.parametrize作为关键字参数。
这是不带pytest.mark.parametrize的简单示例:
G = 10
H = 2
def f(g=G, h=H):
return 5 * g + h
def test_f1():
assert f(h=4) == 54
assert f(g=20) == 102
这是我使用pytest.mark.parametrize进行的一次不成功的尝试。它不起作用,但它有助于理解我想要实现的目标:
import pytest
G = 10
H = 2
def f(g=G, h=H):
return 5 * g + h
@pytest.mark.parametrize("arg, expected", [
("h=4", 54),
("g=20", 102),
])
def test_f2(arg, expected):
assert f(eval(arg)) == expected
推荐答案
函数f
接受关键字参数,因此您需要将测试参数分配给关键字。幸运的是,Python提供了一种非常方便的方式将关键字参数传递给函数.字典:
d = {'h': 4}
f(**d)
d
之前的**
前缀将"解压缩"字典,将每个键/值对作为关键字参数传递给函数。
对于您的pytest
示例,这意味着您只需要将字符串参数替换为字典,将test_f2
中的eval
替换为关键字UnPacker:
@pytest.mark.parametrize("arg,expected", [
({'h':4}, 54),
({'g':20}, 102),
])
def test_f2(arg, expected):
assert f(**arg) == expected
这篇关于对pytest中的关键字参数使用parametrize的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
织梦狗教程
本文标题为:对pytest中的关键字参数使用parametrize


基础教程推荐
猜你喜欢
- kivy 应用程序中的一个简单网页作为小部件 2022-01-01
- 在 Python 中将货币解析为数字 2022-01-01
- 对多索引数据帧的列进行排序 2022-01-01
- 在 Django Admin 中使用内联 OneToOneField 2022-01-01
- Python 中是否有任何支持将长字符串转储为块文字或折叠块的 yaml 库? 2022-01-01
- matplotlib 设置 yaxis 标签大小 2022-01-01
- Python,确定字符串是否应转换为 Int 或 Float 2022-01-01
- 比较两个文本文件以找出差异并将它们输出到新的文本文件 2022-01-01
- Kivy 使用 opencv.调整图像大小 2022-01-01
- 究竟什么是“容器"?在蟒蛇?(以及所有的 python 容器类型是什么?) 2022-01-01