"哪个设计更糟糕:在测试之间共享数据,还是每个测试中多个断言?"

2024-03-29 06:15:44 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我正在测试我的代码,我已经设计了5个函数来实现5种不同的功能。函数\u a()返回的数据被传递给函数\u b()。。。ect一直运行到函数\e()。见下文。你知道吗

var1 = function_a()
var2 = function_b(var1)
...
var5 = function_e(var4)

所以所有这些函数都是相互依赖的,并且依赖于前一个函数的数据。你知道吗

如何正确测试?一个测试中的五个断言对我来说似乎是一种代码味道,但是根据公认的答案here在不同的测试之间传递数据(我认为这在这里是必要的)有点代码味道。你知道吗


Tags: 数据函数答案代码功能herefunction断言
2条回答

One assertion per test只是一个建议(尽管非常合理),它与在每个单元测试中一次测试一件事情有关。在这里,你有多个功能-一个更大的“系统”的多个组件。你知道吗

理想情况下,您需要在一个隔离的中测试这些函数中的每一个,并有一组集成测试检查如果您遍历完整的函数链,它将如何工作。你知道吗

从测试的角度来看,数据从一个函数传递到下一个函数的事实是不相关的。在测试function_a时,您只需断言它返回预期值(可能是基于某种状态)。因此,您将知道预期的返回值是什么。你知道吗

当单独测试function_b时,您只需将期望从function_a返回的值传递给它,并验证它是否返回期望值。您还可以测试传递无效值时发生的情况(当使用实际返回值function_a进行测试时,这将很困难)。你知道吗

这同样适用于其他功能。你应该把你的测试分开单独测试。顺序调用函数的事实对每个函数都没有影响。他们不知道他们的投入来自哪里

相关问题 更多 >