Django单元测试中Fixtures的使用方法
在使用单元测试时,有时候需要测试数据库中有数据,这时我们可以使用Django的Fixtures来生成测试数据。
在对Django项目做单元测试时,我们需要一些初始的数据来作为检测结果的依据,那么对于我们已经有正式数据库的模块来说,使用Fixture载入数据是简单有效的方法。
首先,你需要一份json格式的数据文件,Django对此提供了很好的支持—dumpdata命令:
pythonmanage.pydumpdatamyapp>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.pytest
示例代码
#coding=utf-8 from__future__importunicode_literals importjson fromrest_frameworkimportstatus fromrest_framework.testimportAPITestCase classDjangoUnittest01(APITestCase): fixtures=["my_test.json"] defsetUp(self): data={ "username":'t1', "password":'admin123', "code":666, } self.client.post('/base/admin/login/',data) deftest_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-3116: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)
测试用例通过
Creatingtestdatabaseforalias'default'...
Systemcheckidentifiednoissues(0silenced).
.
----------------------------------------------------------------------
Ran1testin3.863sOK
Destroyingtestdatabaseforalias'default'...
常用断言
assertEqual(a,b)a==b assertNotEqual(a,b)a!=b assertTrue(x)bool(x)isTrue assertFalse(x)bool(x)isFalse assertIs(a,b)aisb assertIsNot(a,b)aisnotb assertIsNone(x)xisNone assertIsNotNone(x)xisnotNone assertIn(a,b)ainb assertNotIn(a,b)anotinb assertIsInstance(a,b)isinstance(a,b) assertNotIsInstance(a,b)notisinstance(a,b) assertListEqual(a,b)lists assertTupleEqual(a,b)tuples assertDictEqual(a,b)dicts
到此这篇关于Django单元测试中Fixtures用法详解的文章就介绍到这了,更多相关DjangoFixtures内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。