Python 如何对不返回任何内容的函数进行单元测试?

Python 如何对不返回任何内容的函数进行单元测试?,python,unit-testing,mocking,Python,Unit Testing,Mocking,通过模拟可以找到函数中局部变量的值吗 class A: def f(self): a = 5000 * 10 B().someFunction(a) 如何为该函数编写单元测试?我模拟了someFunction,因为我不希望测试范围超出块。测试函数其余部分的唯一方法是检查函数末尾变量a的值是否为50000。如何做到这一点?通过交互测试,您可以检查调用someFunction的值。该函数内部发生的事情应该在该函数的单元测试中进行测试。一个不返回任何内容、不修改任何内容、不引发任

通过模拟可以找到函数中局部变量的值吗

class A:
  def f(self):
    a = 5000 * 10
    B().someFunction(a)

如何为该函数编写单元测试?我模拟了
someFunction
,因为我不希望测试范围超出块。测试函数其余部分的唯一方法是检查函数末尾变量a的值是否为50000。如何做到这一点?

通过交互测试,您可以检查调用someFunction的值。该函数内部发生的事情应该在该函数的单元测试中进行测试。

一个不返回任何内容、不修改任何内容、不引发任何错误的函数基本上是没有理由的

  • 如果您的函数应该断言某些内容并引发错误, 给它错误的信息,并检查它是否引起了正确的错误
  • 如果您的函数接受一个对象并对其进行修改,请测试新的 对象的状态与预期一致
  • 如果您的函数输出 如果要将某个内容发送到控制台,则可以临时重定向 输入/输出流并测试写入/读取的内容

如果以上都没有,只需删除你的函数并忘掉它:)

你不需要对这段代码进行单元测试,而是对其进行修改,使其成为一个独立的应用程序逻辑,实际上是可测试的。我假设这只是一个小例子,因为你的函数应该重写
B()。someFunction(50000)
这是正确的。这是一个过于简单的例子。我的要求是在调用函数的最后一行时找到局部变量的值。该函数用于计算传递给另一个函数的变量的值。参数的计算是我想要测试的,如果我可以测试它而不把它移到一个新的函数,那就更好了。然后,正如埃利亚斯所建议的,也许你应该考虑你的函数作为一个模块,并为你的函数中的任何一个函数编写特定的单元测试。函数调用
子进程
?单元测试的方法是什么?我们是否只使用
子进程。检查输出(命令)
,然后查看它是否抛出
调用的进程错误