Django單元測(cè)試中Fixtures的使用方法
在使用單元測(cè)試時(shí),有時(shí)候需要測(cè)試數(shù)據(jù)庫(kù)中有數(shù)據(jù),這時(shí)我們可以使用Django的Fixtures來生成測(cè)試數(shù)據(jù)。
在對(duì)Django項(xiàng)目做單元測(cè)試時(shí),我們需要一些初始的數(shù)據(jù)來作為檢測(cè)結(jié)果的依據(jù),那么對(duì)于我們已經(jīng)有正式數(shù)據(jù)庫(kù)的模塊來說,使用Fixture載入數(shù)據(jù)是簡(jiǎn)單有效的方法。
首先,你需要一份json格式的數(shù)據(jù)文件,Django對(duì)此提供了很好的支持—dumpdata 命令:
python manage.py dumpdata myapp >myapp/fixtures/myapp.json# 這個(gè)命令將幫助你把數(shù)據(jù)庫(kù)中myapp 導(dǎo)入到myapp/fixtures/test.json中# 這個(gè)myapp可以沒有,會(huì)把數(shù)據(jù)庫(kù)所有數(shù)據(jù)生成Json文件
基礎(chǔ)配置
在settings.py 中配置如下內(nèi)容:
FIXTURE_DIRS = (’/path/to/api/fixtures/’,)
接著在test.py中 加入:
fixtures = [’test.json’]
最后么當(dāng)然是運(yùn)行test命令了:
./manage.py test
示例代碼
# coding=utf-8from __future__ import unicode_literalsimport jsonfrom rest_framework import statusfrom rest_framework.test import APITestCaseclass 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開頭的方法將會(huì)執(zhí)行 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)
測(cè)試用例通過
Creating test database for alias ’default’...System check identified no issues (0 silenced)..----------------------------------------------------------------------Ran 1 test in 3.863s
OKDestroying 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
到此這篇關(guān)于Django單元測(cè)試中Fixtures用法詳解的文章就介紹到這了,更多相關(guān)Django Fixtures內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!
相關(guān)文章:
1. ASP動(dòng)態(tài)網(wǎng)頁制作技術(shù)經(jīng)驗(yàn)分享2. vue前端RSA加密java后端解密的方法實(shí)現(xiàn)3. php使用正則驗(yàn)證密碼字段的復(fù)雜強(qiáng)度原理詳細(xì)講解 原創(chuàng)4. JSP+Servlet實(shí)現(xiàn)文件上傳到服務(wù)器功能5. vue項(xiàng)目登錄成功拿到令牌跳轉(zhuǎn)失敗401無登錄信息的解決6. 基于javaweb+jsp實(shí)現(xiàn)企業(yè)財(cái)務(wù)記賬管理系統(tǒng)7. asp批量添加修改刪除操作示例代碼8. 淺談?dòng)蓀osition屬性引申的css進(jìn)階討論9. ASP 信息提示函數(shù)并作返回或者轉(zhuǎn)向10. CSS可以做的幾個(gè)令你嘆為觀止的實(shí)例分享

網(wǎng)公網(wǎng)安備