【问题标题】:Django unittesting different databases for api and for testDjango 对不同的数据库进行单元测试以进行 api 和测试
【发布时间】:2018-09-12 23:22:19
【问题描述】:

默认情况下,django 在运行测试时会创建一个测试数据库,这给我带来了一些不便:

我正在为其编写测试的 API 使用数据库。当我运行测试时,创建了一个新数据库,一些虚拟数据被插入到测试数据库中,并且一个 http post 请求被发送到被测 API。发生的情况是我正在测试的 API 看不到插入的数据。

解释了问题后,使用数据库测试 API 的正确解决方案/最佳实践是什么?

【问题讨论】:

  • 为什么您的“被测 API”看不到数据?

标签: python django python-3.x unit-testing python-unittest


【解决方案1】:

我假设您正在使用 REST 服务,最好使用 Django Rest Framework (DRF)。如果没有,请查找。

测试您自己的 API 的正确方法是:

  1. 创建一个继承 APITestCase 的类。

  2. 在类中创建一个测试函数,例如:test_my_thing(self):

  3. 使用 django 'reverse' 函数生成测试 API 的 URL。

  4. 使用 self.client.get、self.client.post、self.client.delete 并将响应存储在变量中。

  5. response.json() 为您提供 json 格式的响应正文

  6. 断言响应。

【讨论】:

    【解决方案2】:

    您必须在设置中正确指定您的测试数据库名称。 https://docs.djangoproject.com/en/dev/topics/testing/overview/#the-test-database

    此外,您可以尝试在测试中使用带有虚拟数据的夹具。它们将在测试运行之前加载。

    【讨论】:

      猜你喜欢
      • 2013-06-14
      • 1970-01-01
      • 1970-01-01
      • 2022-08-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-29
      • 2012-01-08
      相关资源
      最近更新 更多