如何对不返回值的函数进行单元测试?

13 投票
3 回答
23874 浏览
提问于 2025-04-17 23:38

在一个函数里,通过模拟(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

一个不返回任何东西、不修改任何东西,也不产生任何错误的函数,基本上是没有存在的必要。

  • 如果你的函数应该检查某些事情并抛出错误,那就给它错误的信息,看看它是否能抛出正确的错误。
  • 如果你的函数接收一个对象并对它进行修改,测试一下这个对象的新状态是否符合预期。
  • 如果你的函数向控制台输出内容,你可以暂时改变输入/输出的方向,测试一下写入或读取的内容。

如果以上都不适用,那就把这个函数删掉,别再想它了 :)

撰写回答