gpt4 book ai didi

javascript - 如何使用 Ava 创建参数测试

转载 作者:行者123 更新时间:2023-12-02 21:40:14 24 4
gpt4 key购买 nike

来自Python,我在编写参数测试时习惯了这种语法(希望它是不言自明的):

@pytest.mark.parametrize('a', [0, 1, 2])
@pytest.mark.parametrize('b', [0, 1, 2])
def test_sum(a, b):
assert sum(a, b) == a + b

然后,测试框架将为 ab 的每个组合运行 test_sum(),将每个组合视为不同的测试(即:9 种组合可以独立失败/通过)。

我一直在玩Ava并且,使用宏,我可以轻松地使用不同的参数运行相同的测试:

import test from "ava";

function sum(a, b) {
return a + b;
}

function macroSum(t, a, b) {
t.is(sum(a, b), a + b);
}
macroSum.title = (providedTitle = "", a, b) =>
`${providedTitle}: ${a} + ${b}`

test(macroSum, 0, 0);
test(macroSum, 0, 1);
test(macroSum, 0, 2);
test(macroSum, 1, 0);
test(macroSum, 1, 1);
test(macroSum, 1, 2);
test(macroSum, 2, 0);
test(macroSum, 2, 1);
test(macroSum, 2, 2);

唯一的问题是我需要多次显式调用 test() 。有什么办法可以做我习惯用Python做的事情吗? (声明每个参数的值列表,让框架组合它们并为我运行所有组合)

请注意,这与在测试中嵌入循环不同。对于参数测试,每个组合都是对框架的单独测试,具有不同的标题/标识符,并且可以独立于其他参数组合而失败/通过。

这意味着,我正在寻找的不是像这样的单一测试:

test('all combinations', t => {
[0, 1, 2].forEach(a => {
[0, 1, 2].forEach(b => {
t.is(sum(a, b), a + b);
});
});
});

最佳答案

没有。最好的选择是循环遍历参数数组:

for (const params of [
[1, 0],
[1, 1],
]) {
test(macroSum, ...params)
}

关于javascript - 如何使用 Ava 创建参数测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60382516/

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