Django Rest框架的测试用例;努力得到正确的回答
更新:解决了我自己的问题:我了解到Django创建了自己的测试数据库,因此,它需要填充数据。在我的测试用例中运行我的导入程序,一切都正常。因此,如果您还想知道为什么测试不起作用,请检查测试数据库中是否有一些数据! 结束更新 我正在为Django Rest Framework API编写测试,但我很难让代码返回200 OK。目前,我的测试用例不断返回一个404NotFound 我正处于写作测试的早期阶段,有很多东西要学。我现在正在跟踪 我正在尝试在以下URL测试端点Django Rest框架的测试用例;努力得到正确的回答,django,testing,django-rest-framework,django-testing,Django,Testing,Django Rest Framework,Django Testing,更新:解决了我自己的问题:我了解到Django创建了自己的测试数据库,因此,它需要填充数据。在我的测试用例中运行我的导入程序,一切都正常。因此,如果您还想知道为什么测试不起作用,请检查测试数据库中是否有一些数据! 结束更新 我正在为Django Rest Framework API编写测试,但我很难让代码返回200 OK。目前,我的测试用例不断返回一个404NotFound 我正处于写作测试的早期阶段,有很多东西要学。我现在正在跟踪 我正在尝试在以下URL测试端点 #此处未显示,此处的所有URL
#此处未显示,此处的所有URL都将以/api/v1开头
路径('case/',EntireCaseView.as_view(),name='case'),
我的数据库中有一个ID(主键)为1的对象。我可以通过转到成功查询API
我收到一个有效的JSON响应(Tramp是一只兔子)
我的API需要身份验证,因此我在测试用例中提供身份验证
类案例测试(APITestCase):
def测试状态代码(自身):
"""
确保case/1返回200 OK
"""
#创建一个测试用户
test_user=user(用户名='jim',密码='monkey123',电子邮件='wwwjim@jim.com')
test_user.save()
#建立一个工厂,让我们的用户Jim
factory=APIRequestFactory()
user=user.objects.get(username='jim')
#获取要测试的视图和url
view=entirecaview.as_view()
url=reverse('case',kwargs={'pk':'1'})
打印(url.\uuuu str\uuuuu())
#向视图发出经过身份验证的请求。。。
request=factory.get(url)
打印(请求。获取完整路径()
强制验证(请求,用户=用户)
响应=视图(请求“1”)
打印(响应.数据)
self.assertEqual(response.status\u代码,status.HTTP\u 200\u OK)
这里(至少对我来说)有趣的是台词
url=reverse('case',kwargs={'pk':'1'})
和
response=view(请求,“1”)
如果我在url=r everse('case',kwargs={'pk':'1'})中省略kwargs
参数,或者在response=view(request,“1”)
中省略,我将收到一个错误,指出get()方法需要两个位置参数,但只给定了一个
下面是我视图中get()方法的签名
class entirecaview(APIView):
def get(自我、请求、主键):
如果我运行测试,Django会报告由于404错误而失败
self.assertEqual(response.status_code, status.HTTP_200_OK)
AssertionError: 404 != 200
我想弄明白的是为什么会这样。打印print(url.\uu str\uuu())
输出/api/v1/case/1/
,就像打印request.get\u full\u path())
总之,我试图理解为什么我会收到这个404,以及最终如何测试它和其他端点
非常感谢您的帮助
干杯,
C
self.assertEqual(response.status_code, status.HTTP_200_OK)
AssertionError: 404 != 200