【发布时间】:2022-01-09 23:24:50
【问题描述】:
一个函数在 source.py 中定义并在 use_source.py 中调用。我像这样从 test.py 修补它
source.py
def example_function():
print("I don't want this to run")
use_source.py
from source import example_function
def call_example_function():
example_function()
test.py
import unittest
from unittest.mock import patch
import use_source
file_names = ["use_source.example_function"]
def fake_function():
print("I want this to run instead")
@patch(file_names[0], new=fake_function)
class ExampleTest(unittest.TestCase):
def test_example(self):
use_source.call_example_function()
if __name__ == '__main__':
unittest.main()
但是,我有多个像 use_source.py 这样的文件要修补,所以这是我的问题
如何在给定目标列表的情况下动态调用补丁装饰器?
我正在寻找类似的东西
@patch_list(file_names, new=fake_function)
class ExampleTest(unittest.TestCase):
我可以这样做,但我要修补的文件数量很多且数量不定
@patch(file_names[0], new=fake_function)
@patch(file_names[1], new=fake_function)
class ExampleTest(unittest.TestCase):
最后,我正在寻找一个只修改test.py的解决方案
【问题讨论】:
标签: python dynamic python-unittest python-decorators