Django测试客户端能在生产环境中用于API调用吗?

7 投票
1 回答
1339 浏览
提问于 2025-04-16 09:17

我正在用Django搭建一个应用,里面有一个基于Piston的API。为了保持代码的简洁和API的完整性,我希望我的内部应用能调用这个API,而不是直接调用模型(可以理解为一种代理视图控制器的方式,类似于这个链接,不过现在所有内容都在同一个Django安装里)。所以基本的设置是:

Model -> API -> Application -> User Client

我可以重写一些Piston的核心类,来为应用创建一个内部客户端接口,但我在想我是否可以直接使用Django的测试客户端来实现同样的功能。比如说,要创建一篇文章,我就可以运行:

from django.test.client import Client
c = Client()
article = c.post('/api/articles', {
  'title' : 'My Title',
  'content' : 'My Content'
})

有没有什么理由让我不使用测试客户端来做这个呢?(比如性能方面)有没有更合适的工具专门为这个目的设计?

1 个回答

10

在查看TestClient的代码后,发现它并没有额外的测试负担。实际上,它只是一个用于内部请求的基本客户端。我会把这个测试客户端当作内部客户端来用,并使用Piston的DjangoEmitter从API获取模型对象。

只有通过测试才能判断这个内部请求的机制是否会对性能造成太大的影响。

撰写回答