在Django中测试外部URL

时间:2016-09-26 16:08:05

标签: 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 ... 谁知道我在这里做错了什么?

1 个答案:

答案 0 :(得分:0)

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

如果您确实需要检查外部网址是否已启动,则需要使用正确的HTTP客户端,例如requests。但是,在测试用例中这似乎不合适,因为它依赖于外部API;如果那个API失败了,突然你的测试会失败,这看起来很奇怪。这可能是您在监控工作中所做的事情,但不是在测试中。