使用测试数据库数据库进行视图测试

时间:2018-11-15 07:02:23

标签: django django-views django-testing django-tests

我正在为django应用程序视图编写测试,并且我是一个初学者。我知道在运行测试之前会生成一个新数据库,该数据库仅包含在运行测试时创建的数据,但在我看来,我是通过服务器上的url通过使用我的默认数据库而不是测试的URL进行API调用的数据库的方式如下。

  def test_decline_activity_valid_permission(self):
        url = 'http://myapp:8002/api/v1/profile/' + self.profileUUID + '/document/' + \
              self.docUUID + '/decline/'
        response = requests.post(
            url,
            data=json.dumps(self.payload_valid_permission),
            headers=self.headers,
        )
        self.assertEquals(response.status_code, status.HTTP_201_CREATED)

我想知道我们是否可以使用测试数据库来测试我们的视图。使用请求和使用客户端之间有什么区别?

1 个答案:

答案 0 :(得分:1)

您可以尝试使用Django的LiveServerTestCase。就像TransactionTestCase一样工作,但是将在localhost上启动指向测试数据库的服务器。它会在每次测试的开始/结束时开始/停止。

然后,您可以在测试中将URL配置为指向该本地服务器。 Django提供self.live_server_url用于访问服务器的URL。

如评论中所述,Django的test client允许您测试视图而无需发出实际的HTTP请求。而您在测试中使用的requests library将发送和接收真实的HTTP请求和响应。