Django单元测试中Fixtures的使用方法
本文详解Django单元测试中Fixtures的使用流程。通过dumpdata命令导出JSON数据,配置FIXTURE_DIRS并在测试类中加载,即可快速构建测试环境。结合APITestCase与常用断言方法,实现高效的数据校验与接口测试。
Django Fixtures基础与数据生成
在进行单元测试时,若需验证数据库交互逻辑,Django提供的Fixtures机制可高效生成所需的测试数据。
针对已有正式数据库的模块,在单元测试中载入Fixture数据是获取初始状态、验证结果的最简捷方案。
首先准备一份JSON格式的数据文件,Django内置的dumpdata命令对此提供了完美支持,具体操作如下:
python manage.py dumpdata myapp >myapp/fixtures/myapp.json
# 这个命令将帮助你把数据库中myapp 导入到myapp/fixtures/test.json中
# 这个myapp可以没有,会把数据库所有数据生成Json文件
Fixtures配置与测试执行
基础配置
需在settings.py文件中添加以下配置以指定Fixture目录:
FIXTURE_DIRS = ('/path/to/api/fixtures/',)
随后在test.py测试文件中引入该配置:
fixtures = ['test.json']
最后执行test命令以运行测试:
./manage.py test
测试用例示例与断言方法
示例代码
# coding=utf-8
from __future__ import unicode_literals
import json
from rest_framework import status
from rest_framework.test import APITestCase
class DjangoUnittest01(APITestCase):
fixtures = ["my_test.json"]
def setUp(self):
data = {
"username": 't1',
"password": 'admin123',
"code": 666,
}
self.client.post('/base/admin/login/', data)
def test_usergroup_user_information(self):# 以test开头的方法将会执行
url = '/base/admin/teacher/usergroup/21/user/4/information/?otype=soldier'
response = self.client.get(url)
data = {
"update_date": "2018-05-31 16:22:55",
"task": "196311177981753978",
"otype": "soldier",
"task_name": "f_test1",
"progress": 1.0,
"id": 871
}
self.assertEqual(response.status_code, status.HTTP_200_OK)
self.assertDictEqual(response.data["results"][0], data)
测试用例执行成功,输出如下:
Creating test database for alias 'default'... System check identified no issues (0 silenced). . ---------------------------------------------------------------------- Ran 1 test in 3.863s
OK Destroying test database for alias 'default'...
常用断言
assertEqual(a, b) a == b
assertNotEqual(a, b) a != b
assertTrue(x) bool(x) is True
assertFalse(x) bool(x) is False
assertIs(a, b) a is b
assertIsNot(a, b) a is not b
assertIsNone(x) x is None
assertIsNotNone(x) x is not None
assertIn(a, b) a in b
assertNotIn(a, b) a not in b
assertIsInstance(a, b) isinstance(a, b)
assertNotIsInstance(a, b) not isinstance(a, b)
assertListEqual(a, b) lists
assertTupleEqual(a, b) tuples
assertDictEqual(a, b) dicts
本文介绍了Django单元测试中Fixtures的核心用法,更多相关内容可参考往期文章或继续浏览后续章节。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









