【问题标题】:Use test database database for views testing使用测试数据库数据库进行视图测试
【发布时间】:2019-04-18 05:41:03
【问题描述】:

我正在为我的 django 应用程序视图编写测试,我是这方面的初学者。我知道在运行测试之前会生成一个新数据库,该数据库仅包含在运行测试时创建的数据,但在我看来的测试中,我正在使用我的默认数据库而不是测试的服务器上通过 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)

我想知道我们是否可以使用测试数据库来测试我们的视图。使用request和使用Client有什么区别?

【问题讨论】:

  • requests 发出完整的 http 请求。 Django test Client 避免了 HTTP 的开销,直接与 django 打交道。测试客户端也不需要运行 Web 服务器。

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


【解决方案1】:

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

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

如 cmets 中所述,Django 的 test client 允许您在不发出真正的 HTTP 请求的情况下测试视图。而您在测试中使用的 requests library 将发送和接收真实的 HTTP 请求和响应。

【讨论】:

    猜你喜欢
    • 2014-08-02
    • 2022-08-02
    • 2011-01-25
    • 2011-06-02
    • 1970-01-01
    • 1970-01-01
    • 2012-04-22
    • 2017-01-01
    • 1970-01-01
    相关资源
    最近更新 更多