如何编写一个 for 循环来测试我的所有 5 个测试用例?

Posted

技术标签:

【中文标题】如何编写一个 for 循环来测试我的所有 5 个测试用例?【英文标题】:How can I write a for loop so that it tests all 5 of my test cases? 【发布时间】:2021-08-14 03:08:47 【问题描述】:

我应该根据目标财富计算出定期投资金额。

这是我的用户定义代码:

def contribution_calculator(target_wealth, rate, duration, periodicity):
    inv_amt = -npf.pmt(rate/100/periodicity, duration*periodicity, 0, target_wealth)
    return inv_amt

这些是我的 5 个测试用例,我已将它们放入各自的列表中。

target_wealth = [1000000, 1000000, 3000000, 3000000, 2000000]

rate = [2.5, 2.5, 0.5, 4.0, 3.0]

duration = [25, 12, 25, 25, 10]

periodicity = [12, 1, 12, 12, 2]

例如,测试用例 1 的值为 1000000、2.5、25、12。

如何编写一个 for 循环来测试所有 5 个给定的测试用例?

【问题讨论】:

你是否也想测试这个组合,例如:2000000, 2.5, 25, 12 ? @balandongiv 是的,请!我想测试我的其他组合,例如 1000000, 2.5, 12, 1 用于测试用例 2,3000000, 0.5, 25, 12 用于测试用例 3。有没有办法我可以做一个 for 循环来测试所有这些使用我的用户定义函数contribution_calculator 的案例? 啊,如果你想测试所有组合,你需要itertools.product而不是zip @sabik 我明白了!非常感谢! 【参考方案1】:

您可以使用zip() 和元组解包,如下所示:

for tw, r, d, p in zip(target_wealth, rate, duration, periodicity):
    ...

也许重命名列表,以便您可以使用完整的变量名:

for target_wealth, rate, duration, periodicity in zip(target_wealths, rates, durations, periodicities):
    ...

PS:如果要测试所有组合,而不是对应的值,可以使用itertools.product 代替zip

import itertools
for target_wealth, rate, duration, periodicity in itertools.product(target_wealths, rates, durations, periodicities):
    ...

【讨论】:

麻烦拆包:for x in zip(...): contribution_calculator(*x)

以上是关于如何编写一个 for 循环来测试我的所有 5 个测试用例?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Python Impala 中编写 FOR 循环?

如何更改以列表形式输入 for 循环的变量

用嵌套的for循环编写程序,要求通过这个嵌套的循环在屏幕上打印下列图案:

如何在 R 中编写一个 for 循环来设置列表中数据集的周期以及开始和结束日期

用for语句编写程序实现1到100中所有偶数的和?

如何在 Swift 3 中为我在 for 循环期间修改的数组编写 for 循环?