单元测试Python:模拟函数内部的函数调用
我有这样的django观点单元测试Python:模拟函数内部的函数调用,python,django,unit-testing,mocking,Python,Django,Unit Testing,Mocking,我有这样的django观点 # Django view from some_module import f2 def f1(request, version): # some code f2(**kargs) # more code return HTTPResponse(response) 功能f2位于另一个模块中 # some_module def f2(**kargs): # some code Django视图是API的一部分,因此请求和
# Django view
from some_module import f2
def f1(request, version):
# some code
f2(**kargs)
# more code
return HTTPResponse(response)
功能f2位于另一个模块中
# some_module
def f2(**kargs):
# some code
Django视图是API的一部分,因此请求和响应是json格式的
我如何:
我使用的数据库是Cassandra,因此我无法使用django.dbdjango提供了一些用于测试的脚手架-请参阅
至于
f2()
-您可以使用设置数据库。或者使用提供虚拟数据库连接。您可以在unittests中使用@mock.patch
装饰器来模拟f2()
方法
import mock
import some_module
from django.test import TestCase
def mocked_f2(**kargs):
return 'Hey'
class YourTestCase(TestCase):
@mock.patch('some_module.f2', side_effect=mocked_f2)
def test_case(self):
print some_module.f2() # will print: 'Hey'
在这种情况下,每次在代码中调用
f2()
,都会调用mocked\u f2
。f2()
只是将一些数据写入数据库。我希望它在f1赛车中完全被模仿。如果我想测试<代码> f1()/<代码>,它会模拟所有的<代码> f2()>代码>调用,即使你对它们做了via<代码> f1()>代码>方法,请考虑编辑你的帖子,以添加更多关于你的代码所做的解释以及为什么它会解决这个问题的解释。一个只包含代码的答案(即使它在工作)通常不会帮助OP理解他们的问题。我认为代码不需要更多的解释