我对“单元测试”这个话题不太在行。我希望创建一个单元测试,以便说:“嘿,大家,这是错误的(或正确的)答案,因为某某原因!”我需要设置一个单元测试,因为花了整整3个星期才找到机器学习模型预测不工作的原因!因此,我希望将来避免这种类型的错误。
问题:
- 如何让代码在我输入
len(X) - len(pred_values)
不等于num_step
时发出警报? - 我是否需要创建一个单元测试文件来收集所有的单元测试,例如
unittest.py
? - 我们是否需要将单元测试与主代码分开存放?
回答:
1.测试代码可以通过断言来提醒你。在你的测试中,你可以使用self.assertEqual()
self.assertEqual(len(X) - len(pred_values), num_step)
2.是的,你通常会将你的TestCase
类集中在一个以test_
为前缀的模块中。所以,如果被测试的代码位于一个名为foo.py
的模块中,你应该将测试放在test_foo.py
中。在test_foo.py
中,你可以创建多个TestCase
类来将相关的测试归类在一起。
3.将测试与主代码分开是个好主意,尽管这不是强制性的。你可能想要分开测试的原因包括(如文档中引用):
- 测试模块可以从命令行独立运行。
- 测试代码可以更容易地与发布的代码分开。
- 不太容易因为没有好的理由而修改测试代码以适应被测试的代码。
- 测试代码应该比它测试的代码修改得更少。
- 被测试的代码可以更容易地重构。
- 用C语言编写的模块的测试必须在单独的模块中,反正为什么不保持一致呢?
- 如果测试策略发生变化,就不需要更改源代码。
更多信息请查看官方文档。