2016-09-26 60 views
0

我目前很难让一些Django测试正常工作。 我想要做的是测试一个给定的URL(我想要使用的REST API)是否已经启动并运行(返回状态代码200),如果它响应了预期的值,那么稍后会进行测试。 但是,我得到的所有信息都是状态码404(页面未找到),即使URL确实是正确的。 (尝试使用的确切串在我的浏览器)在Django中测试外部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

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

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

+0

感谢您的回复!我会将它标记为接受的答案,一次让我让:) – 0ctar