Django为api和测试

时间:2018-04-03 15:05:24

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

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

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

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

2 个答案:

答案 0 :(得分:0)

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

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

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

  2. 在课堂上创建一个测试函数,例如:test_my_thing(self):

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

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

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

  6. 断言回复。

答案 1 :(得分:0)

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

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