【问题标题】:How to mock logging in Django Rest Framework unittest?如何在 Django Rest Framework 单元测试中模拟日志记录?
【发布时间】:2018-07-22 17:25:50
【问题描述】:

我有一个单元测试来测试未经授权的用户是否可以GET 某个网址。我想使用unittest.mock 来模拟请求中的日志记录。如何让装饰器使用正确的记录器?我的测试看起来像:

@patch(what goes here???)
def test_response_list_not_authenticated(self, mock_logging):
    url = django.core.urlresolvers.reverse("project-api:response-list", args=[6])
    response = self.client.get(url, format="json")
    self.assertEqual(response.status_code, rest_framework.status.HTTP_401_UNAUTHORIZED)
    self.assertEqual(mock_logging.error.called, True)

【问题讨论】:

    标签: python django logging django-rest-framework


    【解决方案1】:

    您只需将路径放入您的logging 对象,例如,您在"myapp.views" 文件中有以下内容

    import logging
    
    logger = logging.getLogger(__name__)
    

    然后在你的测试中你做:

    @patch('myapp.views.logger')
    def test_response_list_not_authenticated(self, mock_logger):
         ...
         # asserts about logger
         self.assertTrue(mock_logger.error.called)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-24
      • 2018-05-14
      • 1970-01-01
      • 2011-07-12
      • 2018-11-24
      • 1970-01-01
      • 2021-11-26
      • 2018-04-21
      相关资源
      最近更新 更多