python - 在 Django 中测试外部 URL

标签 python django unit-testing testing

我目前很难让我的一些 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 出现故障,您的测试会突然失败,这看起来很奇怪。这可能是您在监控工作中所做的事情,而不是在测试中。

关于python - 在 Django 中测试外部 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39707524/

相关文章:

python - Python 中的情感分析 : Textblob vs Vader?

python - Python 列表(元组)中每个元素有多少字节?

unit-testing - 与测试代码相比,单元测试的典型大小

perl - 有没有什么方法可以在没有计划的情况下使用 Test::More 中的 diag() ?

reactjs - 'http ://localhost:300 0' has been blocked by CORS policy: No ' Access-Control-Allow-Origin' header is present on the requested resource

java - eclipse 中的 Junit 在使用 junit 时产生 NoClassDefFoundError

python - 来自 rr 数据的真实 ECG 信号模拟器,用于 matlab 或 python

python - 在大型 DataFrame 上使用 Pandas 进行排列的有效方法

python - django将不同的链接重定向到同一页面

django - 在 Django Rest Framework 中发布外键关系