怎么在Django单元测试中使用Fixtures?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
首先,你需要一份json格式的数据文件,Django对此提供了很好的支持—dumpdata 命令:
python manage.py dumpdata myapp >myapp/fixtures/myapp.json # 这个命令将帮助你把数据库中myapp 导入到myapp/fixtures/test.json中 # 这个myapp可以没有,会把数据库所有数据生成Json文件
基础配置
在settings.py 中配置如下内容:
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.863sOK
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的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注亿速云行业资讯频道,感谢各位的阅读!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。