我有一个Django应用程序,需要处理以下内容:
requests
模块。我汇编了我需要调用的端点的URL,转储POST参数,然后执行调用。代码与此类似:
from django.conf import settings
import json
def view1(request, *args, **kwargs):
url = 'http://api.%s/view2/' % settings.DOMAIN
r = requests.post(
url,
data=json.dumps({'key': 'value'}),
)
// Notice that the ``url`` is a url of the actual deployed application,
// and therefore knows nothing about testing and its state. That's where
// it goes wrong.
问题是,有没有一种方法可以在测试中正确运行?我使用django.test.client.Client
类来创建测试请求。据我所知,这个类的实例直接与URL映射器对话。因此,我在视图中构建的url
只是对已部署应用程序的外部http请求,而不是已测试应用程序。
感谢。
答案 0 :(得分:1)
解决此问题的一种方法是为测试目的模拟URL的响应。我建议使用一个轻量级的模拟库,例如:
http://blog.moertel.com/posts/2011-11-07-a-flyweight-mocking-helper-for-python.html
请参阅示例代码。这与你的情况非常相似。我已将这两者与请求和瓶子结合使用,但不是django。