有两次尝试从“正在工作的”django服务器获取响应。工作版本是硬编码的,在单元测试时不工作
# working
# a = requests.post('http://localhost:8000/ImportKeys/',
# data=json.dumps({'user_id': key_obj.email,
#'key': self.restore_pubkey(key_obj.fingerprint)}))
# not working
a = requests.post('http://' + request.get_host() + reverse('import_keys'),data=json.dumps({'user_id': key_obj.email,'key': self.restore_pubkey(key_obj.fingerprint)}))
在那个版本中,我要开始工作了,我得到了这个(结束stacktrace):
File "/home/PycharmProjects/lib/python3.4/site-packages/requests/sessions.py", line 576, in send r = adapter.send(request, **kwargs) File "/home/PycharmProjects/lib/python3.4/site-packages/requests/adapters.py", line 437, in send raise ConnectionError(e, request=request) requests.exceptions.ConnectionError: HTTPConnectionPool(host='testserver', port=80): Max retries exceeded with url: /ImportKeys/ (Caused by NewConnectionError(': Failed to establish a new connection: [Errno -2] Name or service not known',))
是的,我看到它正在尝试连接到80端口,这很糟糕。在
如果您需要在测试期间向服务器发送请求(在这种情况下,这可能不是来自测试代码本身,而是来自某个模拟代码或JS代码):
扩展
LiveServerTestCase
而不是TestCase
。这将在测试期间启动实际的服务器。在如果您正在测试的常规代码中使用
request.build_absolute_uri()
,则需要更改测试代码以相应地更新HTTP请求头,如下所示:要在} 。如果您从
TestCase
类中测试视图,请使用专门为此目的而设计的^{django.test.TestCase
继承测试用例,那么它已经可以通过self.client
属性获得。在如果您使用Django Rest框架,请考虑使用它奇妙的^{} ,这将进一步简化API测试。在
相关问题 更多 >
编程相关推荐