Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django Rest框架的测试用例;努力得到正确的回答_Django_Testing_Django Rest Framework_Django Testing - Fatal编程技术网

Django Rest框架的测试用例;努力得到正确的回答

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

更新解决了我自己的问题:我了解到Django创建了自己的测试数据库,因此,它需要填充数据。在我的测试用例中运行我的导入程序,一切都正常。因此,如果您还想知道为什么测试不起作用,请检查测试数据库中是否有一些数据! 结束更新

我正在为Django Rest Framework API编写测试,但我很难让代码返回200 OK。目前,我的测试用例不断返回一个404NotFound

我正处于写作测试的早期阶段,有很多东西要学。我现在正在跟踪

我正在尝试在以下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