gpt4 book ai didi

python - pytest-nodev : automatic permutation of arguments

转载 作者:行者123 更新时间:2023-11-28 17:29:59 25 4
gpt4 key购买 nike

我正在学习如何使用 pytest-nodev搜索由单元测试定义的函数的实现。对于具有两个(或更多)参数的函数,是否有任何方法可以自动尝试输入参数的所有排列?

例如,使用以下测试函数:

def test_copysign_hit(wish): 
copysign = wish
assert copysign(2, 2) == 2
assert copysign(-3, 2) == 3
assert copysign(4, -2) == -4
assert copysign(-5, -2) == -5

使用以下命令行:

py.test test_copysign.py --wish-modules math

我因 math.copysign 获得了命中 .

但是如果我在我的测试函数中置换参数,这只是一个实现细节,我不会得到命中:

def test_copysign_no_hit(wish): 
copysign = wish
assert copysign(2, 2) == 2
assert copysign(2, -3) == 3
assert copysign(-2, 4) == -4
assert copysign(-2, -5) == -5

最佳答案

排列可调用参数的能力 is an enhancement request , 但目前尚未实现。

作为变通方法,您可以在对测试函数进行最少更改的情况下运行更多次,如下所示:

def test_copysign_hit(candidate): 
# one run per permutation
def copysign(a1, a2):
return candidate(a2, a1)
# original test
assert copysign(2, 2) == 2
assert copysign(-3, 2) == 3
assert copysign(4, -2) == -4
assert copysign(-5, -2) == -5

关于python - pytest-nodev : automatic permutation of arguments,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35158372/

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