【问题标题】:Unit testing: what to do if the method/function to test doesn't exist单元测试:如果要测试的方法/功能不存在怎么办
【发布时间】:2016-07-18 05:27:23
【问题描述】:

我通过从数据库中读取以下信息来自动化我的测试:

  • 要测试的方法的名称
  • 方法的输入数据
  • 预期结果

对于从数据库中检索到的每一行,使用反射创建一个测试方法。

到目前为止,在创建测试方法之前,我会检查要测试的方法是否存在。如果没有,则不会创建测试方法。

但我想提供有关仍需编写的方法的信息。从某种角度来看,这些是没有通过测试的方法。那么,在这些测试中应该引发或发出哪种类型的错误或警告?


P.S:我目前使用的PyUnitJUnit 非常相似,但我的问题并不特定于任何框架。

【问题讨论】:

  • 当您写“仍需测试的方法”时,您的意思是“仍需编写的方法”吗?
  • @DaveSchweisguth 感谢您的指出。

标签: unit-testing tdd automated-tests


【解决方案1】:

测试失败时该怎么做取决于失败的原因。

最安全的默认设置是假设测试失败是因为程序有错误。这是最安全的,因为它允许某人以最少的知识和努力编写一个在应该失败的测试(毕竟这是测试框架的主要目的)。因此,如果方法不存在,请让您的框架默认失败。

但是测试可能会失败,因为您已经编写了测试但还没有实现它。 (对您有好处,您正在执行 TDD!)如果您在实现其中任何一个测试之前编写了多个测试,您可能希望这些测试通过,这样您就不会将正在进行的工作与回归混淆。事实上,一些框架有一种将测试标记为正在进行的方法,这样它就不会失败,但会发出警告以提醒您完成工作。这就是我处理你未实现的方法的方式。

在 PyUnit 中,the skip() decorator 看起来就是你想要的:

@unittest.skip('method not implemented yet')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-13
    • 1970-01-01
    • 1970-01-01
    • 2011-02-14
    相关资源
    最近更新 更多