Django單元測試中Fixtures的使用方法
阿新 • • 發佈:2020-02-26
在使用單元測試時,有時候需要測試資料庫中有資料,這時我們可以使用Django的Fixtures來生成測試資料。
在對Django專案做單元測試時,我們需要一些初始的資料來作為檢測結果的依據,那麼對於我們已經有正式資料庫的模組來說,使用Fixture載入資料是簡單有效的方法。
首先,你需要一份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用法詳解的文章就介紹到這了,更多相關Django Fixtures內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!