Skip to main content
 首页 » 编程设计

python之在 Django 中测试外部 URL

2025年04月02日22kuangbin

我目前很难让我的一些 Django 测试正常工作。 我想要做的是测试给定的 URL(我想使用的 REST API)是否已启动并正在运行(返回状态代码 200),然后测试它是否响应预期值。 然而,我得到的只是一个状态代码 404(找不到页面),即使 URL 绝对是正确的。 (在我的浏览器中尝试了确切的字符串)

这是代码:

from django.test import TestCase 
 
 
class RestTest(TestCase): 
    def test_api_test_endpoint(self): 
        response = self.client.get("http://ip.to.my.api:8181/test/") 
        self.assertEqual(response.status_code, 200, "Status code not equals 200") 

它总是返回 404 而不是 200... 有人知道我在这里做错了什么吗?

请您参考如下方法:

self.client 不是真正的 HTTP 客户端;它是 Django 测试客户端,它模拟对您自己的应用程序的请求以进行测试。它不发出 HTTP 请求,它只接受路径,而不是完整的 URL。

如果您真的需要检查外部 URL 是否已启动,您将需要一个合适的 HTTP 客户端,例如 requests。然而,在测试用例中这似乎不是一件合适的事情,因为它依赖于外部 API;如果该 API 出现故障,您的测试会突然失败,这看起来很奇怪。这可能是您在监控工作中所做的事情,而不是在测试中。