我正在对我的应用程序进行单元测试。大多数测试所做的是调用具有特定参数的函数并断言返回值与期望值相等。
在某些测试中,预期的返回值是一个相对较大的对象。例如,其中之一是将 5 个字符串映射到元组列表的字典。定义该对象需要 40-50 行重复的代码,但该对象是我正在测试的函数之一的预期值。我不想在测试函数中定义预期返回值的 40-50 行代码,因为我的大多数测试函数都包含 3-6 行代码。我正在寻找这种情况的最佳实践。在测试中放入冗长定义的正确方法是什么?
以下是我正在考虑解决这个问题的想法,在我看来,从最好到最差排列:
对象的测试样本:基于键的子集进行一些相等断言。为了代码的优雅,这将牺牲测试的彻底性。
在单独的模块中定义对象:在单独的 .py 文件中编写冗长的 40-50 行代码,在测试中导入模块,然后进行相等断言。这将使测试简短明了,但我不喜欢有一个单独的文件作为测试的补充;毕竟对象定义是测试的一部分。
在测试函数中定义对象:这是我希望避免的简单解决方案。我的测试非常简单明了,该对象的冗长定义不合适。
也许我太痴迷于干净的代码,但我不喜欢上面的解决方案。还有另一种我没有想到的常见做法吗?