当前位置: 首页 > 知识库问答 >
问题:

Django POST方法单元测试失败,Assertionerror 401

慕晨
2023-03-14

我正在为一个具有HTTP get、put和post方法模块的应用程序编写django unittests。我一直在引用rest_framework的APITestCase方法来为POST方法编写unittest。

def test_postByTestCase(self):
    url = reverse('lib:ingredient-detail',args=('123',))
    data = {'name':'test_data','status':'draft','config':'null'}
    response = self.client.post(url, data, format='json')
    self.assertEqual(response.status_code, status.HTTP_201_CREATED)
$ python manage.py test lib.IngredientTestCase.test_postByTestCase

=========================================================================

Traceback(最近调用最后):文件“C:\apache2\htdocs\ilab\api\lib\tests.py”,第42行,在test_postByTestCase self.assertequal(response.status_code,status.http_201_created)中

在5.937秒内运行1个测试

失败(失败=1)

我尝试传递HTTP_AUTHORIZATION令牌值,但没有帮助。

共有1个答案

袁谭三
2023-03-14

401错误表示您的请求未经授权。您要测试的应用程序需要登录吗?如果是这种情况,在尝试post请求之前,您需要在测试中设置一个经过身份验证的用户。

# my_api_test.py

def setUp:
    # Set up user
    self.user = User(email="foo@bar.com") # NB: You could also use a factory for this
    password = 'some_password'
    self.user.set_password(password)
    self.user.save()

    # Authenticate client with user
    self.client = Client()
    self.client.login(email=self.user.email, password=password)

def test_postByTestCase(self):
    url = reverse('lib:ingredient-detail',args=('123',))
    data = {'name':'test_data','status':'draft','config':'null'}
    response = self.client.post(url, data, format='json')
    self.assertEqual(response.status_code, status.HTTP_201_CREATED)

一旦您将用户登录到您的客户机,那么您应该能够正确地调用API,并看到201响应。

 类似资料:
  • 我不熟悉匕首。我创建了一个非常简单的单元测试,试图理解我应该如何使用dagger。不幸的是,它失败了。我可能还不了解匕首的一些基本原理。 而我的测试课失败了 我认为dagger会将B注入A,因为A希望注入B,DaggerModule包含一个@Providers注释方法,该方法创建B。 更新: 我发现当我像这样编写模块类时 将B注入A作品中。然而,我不理解为什么当模块有一个构造a实例的带注释的方法时

  • 我遇到了一个挑战,当我单独运行测试时,测试通过了,但当我运行所有测试时,测试失败了,它会显示以下错误消息: java.lang.RuntimeException:Android.os.Looper中的方法getMainLooper未被嘲弄。详见http://g.co/androidstudio/not-mocked。 在Android.os.looper.GetMainLooper(looper.

  • spring.datasource.hikari.schema=demo 错误: 原因:org.springframework.beans.factory.beanCreationException:创建类路径资源[org/springframework/boot/autocconfigure/orm/jpa/hibernatejpaconfiguration.class]中定义的名为“Entit

  • 我试图在我正在编写的脚本中测试错误处理。如果异步函数fetchBar失败,我将模式匹配失败案例,然后返回包含失败结果的成功未来。 然而,当我对这个流进行单元测试时,我在测试失败案例时遇到了麻烦。我在fetchBar上打了一个存根,以返回失败的future,如下所示。 但是我注意到fetchedBar返回的是成功而不是失败。为什么会这样,我如何存根fetchBar函数来创建一个失败的尝试?

  • 从Spring 3.1开始,由于@Enable*注释,我们可以更容易地使用JavaConfig。 所以我做了一个WebConfig来设置WebMvc配置,并尝试对其进行测试。但是,如果我使用WebConfig扩展WebMVCConfigureAdapter或WebMvcConfigurationSupport,单元测试将失败,因为缺少ServletContext。代码和消息如下所示。 网络配置。J

  • 编辑:供未来读者使用。我不知道这个问题是否对你有很大的帮助。有趣的逻辑已经发生了很大的变化,所以我关闭了这个问题,但不会删除它。 我正在尝试为我的ViewModel编写一些单元测试。我正在使用Mockk和junit5。 应该发生的事情:模拟存储库返回fakeresponse(我称之为VM中的乐趣),它将livedata设置为假响应数据。 实际发生的情况: 这就是考验 这是测试中延长的两个类 这是苏