我目前很难让我的一些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 ... 谁知道我在这里做错了什么?
答案 0 :(得分:0)
self.client
不是真正的HTTP客户端;它是Django测试客户端,它模拟对您自己的应用程序的请求以进行测试。它不会发出HTTP请求,它只接受路径,而不是完整的URL。
如果您确实需要检查外部网址是否已启动,则需要使用正确的HTTP客户端,例如requests
。但是,在测试用例中这似乎不合适,因为它依赖于外部API;如果那个API失败了,突然你的测试会失败,这看起来很奇怪。这可能是您在监控工作中所做的事情,但不是在测试中。