Python模拟在另一个函数中声明的全局变量

时间:2017-10-06 10:24:51

标签: python unit-testing mocking

我正在对使用其他函数声明的变量的函数进行单元测试。

def first_fun():
   global file_path
   file_path = get_file_path()
   .
   .

def second_fun():
   with open(file_path, "r") as flz:
   .
   .

如何在测试second_fun()时模拟file_path? 我尝试了这个但是没有用。

   @patch.object(source_module, 'file_path')
   def test_second_fun(self):
          source_module.second_fun()
  

我继续......没有属性'file_path'

1 个答案:

答案 0 :(得分:0)

需要考虑两件事:

首先:

  

显式优于隐式

在这种情况下,file_path应该是一个函数参数。

第二: 为了使您的测试成为单元测试,您应该修补open()而不是路径,因为您不应该依赖外部资源。