无法模拟分配给函数调用python pytest的全局变量

cu6pst1q  于 2023-01-10  发布在  Python
关注(0)|答案(1)|浏览(145)

当我运行我的pytest和mock补丁python文件中的一个全局变量时,它被分配了一个函数调用来捕获输出,我不能mock它(我不想在测试期间实际执行这个函数)。我发现这个函数仍然被调用。我如何阻止它被调用?

file 1: /app/file1.py
def some_func():
 return "the sky is like super blue"

file 2: /app/file2.py
from app.file1 import some_func
VAR1 = some_func()

file 3: /tests/app/test_file2.py
import mock
import pytest
from app.file2 import VAR1

@mock.patch('app.file2.VAR1', return_value=None)
def test_file_2_func(baba_fake_val):
  print('made it to my test :)'
  print(VAR1)
bqjvbblv

bqjvbblv1#

1.导入app.file2时会执行VAR = some_func(),所以如果要阻止som_func调用,必须在导入前进行mock。
1.为了防止这个函数调用,你必须模拟some_func,而不是VAR1,如下所示:

import mock
import pytest
import app.file1

@mock.patch('app.file1.some_func', return_value=None)
def test_file_2_func(baba_fake_val):
  from app.file2 import VAR1
  print('made it to my test :)'
  print(VAR1)

相关问题