gpt4 book ai didi

python - 在 pytest 中对关键字参数使用参数化

转载 作者:太空狗 更新时间:2023-10-30 00:40:46 24 4
gpt4 key购买 nike

我正在学习 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 替换为关键字解包器:

@pytest.mark.parametrize("arg,expected", [
({'h':4}, 54),
({'g':20}, 102),
])

def test_f2(arg, expected):
assert f(**arg) == expected

关于python - 在 pytest 中对关键字参数使用参数化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23418844/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com