【问题标题】:Testing external URLs in Django在 Django 中测试外部 URL
【发布时间】:2016-09-26 16:08:04
【问题描述】:

我目前很难让我的一些 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... 有谁知道我在这里做错了什么?

【问题讨论】:

    标签: python django unit-testing testing


    【解决方案1】:

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

    如果您确实需要检查外部 URL 是否已启动,则需要一个合适的 HTTP 客户端,例如 requests。然而,这在测试用例中似乎并不合适,因为它依赖于外部 API;如果该 API 出现故障,您的测试突然会失败,这似乎很奇怪。这可能是您在监控工作中执行的操作,但不是在测试中执行的操作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-14
      • 1970-01-01
      • 1970-01-01
      • 2016-01-27
      • 1970-01-01
      • 2012-01-02
      • 1970-01-01
      • 2012-12-02
      相关资源
      最近更新 更多