如果不等于num_steps的真实值,则发出警报

时间:2018-11-12 23:25:18

标签: unit-testing machine-learning pytest python-unittest

我对“ unittest”主题不太满意。我想创建一个单元测试,以便说“嘿,这是错误的(或正确的)答案,因为blabla!”。我需要进行一次单元测试,因为花了3 MF周才能找到为什么机器学习模型中的预测不起作用!因此,我希望将来避免此类错误。

问题:

  1. len(X) - len(pred_values)不等于num_step时,如何要求代码提醒我?
  2. 我是否需要创建一个单元测试文件来收集所有单元测试,例如unittest.py
  3. 我们是否需要将单元测试与主要代码分开放置?

1 个答案:

答案 0 :(得分:1)

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语言编写的模块的测试必须位于单独的模块中,所以为什么不一致?
  •   
  • 如果测试策略发生变化,则无需更改源代码。
  •   

official docs中提供了更多信息。