这是一个过程问题而不是其他任何问题,但我现在已经用Python编程了一下,我试图理解单元测试,功能测试之间的区别,以及何时适当地使用模拟以便测试功能。我有以下安排:
@classmethod
def get_value(cls, key):
if cls._definitionsDict is None:
cls.load_definitions()
if not key in cls._definitionsDict:
return None
else:
return cls._definitionsDict[key]
基本上,现在我想为这个函数编写一些测试。我正在考虑三种方法,我真的不确定哪种方法是正确的(阅读:最广泛接受的)做事方式。
load_definitions
函数的测试,确保cls._definitionsDict
为None
时,调用load_definitions
时没有args。 (我假设这是一个“严格的单元测试”)load_definitions
函数的测试,但只是确保在给定某个输入的情况下输出符合预期。 (我假设这是一个“严格的功能测试”)我很想你对此的想法和意见。我想,从某种意义上说,这个问题是询问在哪里划线嘲笑。应该嘲笑什么?单元测试是测试代码流,还是简单的函数输入/输出?
作为补充说明,第1号选项似乎与“单位”测试的想法相符;但是,源代码中的任何更改都需要更新测试。这是单元测试的目标吗?
答案 0 :(得分:1)
您似乎对各种测试分类方法感到困惑。让我试着澄清一下。
单元测试是最低级别的测试,更高级别是模块,集成和系统测试。
功能测试是仅考虑功能测试的测试。方面,而不是非功能性的'代码方面。可以在每个级别执行功能测试。
您的问题中1和2之间的差异是1是一个白盒'测试,以及2 a'黑盒子'测试。黑盒测试仅在单元/模块/系统的公共接口上运行,白盒测试也在内部测试代码内部。
我对测试的个人想法如下: