v.t*_*rey 5 python django patch mocking
|-- my_module
| |-- __init__.py
| |-- function.py
`-- test.py
Run Code Online (Sandbox Code Playgroud)
在function.py中:
import other_function
def function():
doStuff()
other_function()
return
Run Code Online (Sandbox Code Playgroud)
在__init__.py中
from .function import function
Run Code Online (Sandbox Code Playgroud)
在我的test.py中
from django.test import TestCase
from mock import patch
from my_module import function
class Test(TestCase):
@patch('my_module.function.other_function')
def function_test(self, mock_other_function):
function()
Run Code Online (Sandbox Code Playgroud)
当我运行它时,我得到了AttributeError:
<@任务:项目:0x7fed6b4fc198的my_module.function.function>没有属性'other_function'
这意味着我正在尝试修补功能“功能”而不是模块“功能”。我不知道该如何修补我要修补的模块。
我也想避免重命名我的模块或函数。
有任何想法吗?
[编辑]您可以在https://github.com/vthorey/example_mock run上找到一个示例
python manage.py test
Run Code Online (Sandbox Code Playgroud)
您可以在以下位置以不同的名称提供该模块__init__.py:
from . import function as function_module
from .function import function
Run Code Online (Sandbox Code Playgroud)
然后您可以在 中执行以下操作test.py:
from django.test import TestCase
from mock import patch
from my_module import function
class Test(TestCase):
@patch('my_module.function_module.other_function')
def function_test(self, mock_other_function):
function()
Run Code Online (Sandbox Code Playgroud)
我不认为这是一个特别优雅的解决方案 - 对于普通读者来说代码不是很清楚。
| 归档时间: |
|
| 查看次数: |
658 次 |
| 最近记录: |