如何对不返回值的函数进行单元测试?
在一个函数里,通过模拟(mocking)能否找到局部变量的值呢?
class A:
def f(self):
a = 5000 * 10
B().someFunction(a)
我该如何为这个函数写单元测试呢?我已经模拟了 someFunction
,因为我不想让测试的范围超出这个块。现在,我唯一能测试这个函数其他部分的方法就是检查变量 a 在函数结束时是否为 50000。那我该怎么做呢?
3 个回答
-1
把函数的主要部分放在一个 try
/except
块里,这个块不返回任何东西,如果成功就返回真(true)。这样做不会影响现有的代码。
例如:
def fun():
try:
# function code
return True
except Exception as e:
raise Exception(str(e))
1
通过交互测试,你可以检查某个函数是用什么值被调用的。至于这个函数内部发生了什么,应该在这个函数的单元测试中进行测试。
23
一个不返回任何东西、不修改任何东西,也不产生任何错误的函数,基本上是没有存在的必要。
- 如果你的函数应该检查某些事情并抛出错误,那就给它错误的信息,看看它是否能抛出正确的错误。
- 如果你的函数接收一个对象并对它进行修改,测试一下这个对象的新状态是否符合预期。
- 如果你的函数向控制台输出内容,你可以暂时改变输入/输出的方向,测试一下写入或读取的内容。
如果以上都不适用,那就把这个函数删掉,别再想它了 :)