我有以下代码,我正在尝试创建一个测试(仍在进行中):
from core.tests import BaseTestCase
from core.views import get_request
from entidades.forms import InstituicaoForm
from mock import patch
class InstituicaoFormTestCase(BaseTestCase):
def setUp(self):
super(InstituicaoFormTestCase, self).setUp()
@patch('get_request', return_value={'user': 'usuario_qualquer'})
def test_salva_instituicao_quando_informaram_convenio():
import pdb
pdb.set_trace()
form = InstituicaoForm()它失败的原因是,当我尝试创建InstituicaoForm时,get_request被调用:
def get_request():
return getattr(THREAD_LOCAL, 'request', None)它处理了这个错误
entidades/tests.py:11: in <module>
class InstituicaoFormTestCase(BaseTestCase):
entidades/tests.py:16: in InstituicaoFormTestCase
@patch('get_request', return_value={'user': 'usuario_qualquer'})
.tox/unit/local/lib/python2.7/site-packages/mock/mock.py:1670: in patch
getter, attribute = _get_target(target)
.tox/unit/local/lib/python2.7/site-packages/mock/mock.py:1522: in _get_target
(target,))
E TypeError: Need a valid target to patch. You supplied: 'get_request'
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> entering PDB >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> /home/vinicius/telessaude/.tox/unit/local/lib/python2.7/site-packages/mock/mock.py(1522)_get_target()
-> (target,))我做错了什么?应该如何模拟这个get_request()方法?
发布于 2017-08-06 11:17:28
我认为你想要做的具体事情可以这样做:
@patch('core.views.get_request', return_value={'user': 'usuario_qualquer'})但是,如果您还没有看过Django testing documentation,那么也应该看看它。您可以使用测试客户端来伪造web请求。
如果您想尝试不访问数据库的模拟测试,请查看Django Mock Queries。(我是这个项目的一个小贡献者。)我也尝试过模拟视图,但它很麻烦。
https://stackoverflow.com/questions/45515107
复制相似问题