- 首先Django的test也是直接調(diào)用的unittest規(guī)則仔夺,所以赠堵,建議在有順序執(zhí)行的TestCase中使用0-9, a-z這樣的順序進(jìn)行一些排序
例如:
test_01_registerEquip_get
test_02_registerEquip_post_rightdata
test_03_registerEquip_post_errordata
- setUpClass/tearDownClass會(huì)被調(diào)用一次跌前,setUp/tearDown每個(gè)函數(shù)執(zhí)行的時(shí)候都會(huì)被調(diào)用
所以需要一開始就初始化的數(shù)據(jù)內(nèi)容结序,建議放在setUpClass违寞,并且做好保護(hù),譬如設(shè)置已存在就不再create數(shù)據(jù)
@classmethod
def setUpClass(cls) -> None:
eType_num = EquipType.objects.filter(equip_type='TestType1').count()
if eType_num == 0:
eType = EquipType.objects.create(equip_type='TestType1')
else:
eType = EquipType.objects.get(equip_type='TestType1')
eqs_num = Equip.objects.filter(name='TestDevice1', equip_type=eType).count()
if eqs_num == 0:
eqs = Equip.objects.create(name='TestDevice1', equip_type=eType, status='free')
else:
eqs = Equip.objects.get(name='TestDevice1')
- HttpResponse和JsonResponse不能直接判斷契邀,需要做一些轉(zhuǎn)換讀取
def test_01_registerEquip_get(self):
res = self.client.get('/equip/API/RegisterEquip/', format='json')
res_dict = json.loads(str(res.content,'utf-8'))
self.assertEqual(res_dict['ReturnCode'], 200)
- 每個(gè)測(cè)試函數(shù)運(yùn)行的數(shù)據(jù)都會(huì)被建立及被摧毀摆寄,所以如果函數(shù)間存在依賴關(guān)系的話,得在有依賴的函數(shù)中再次引用被依賴函數(shù)的數(shù)據(jù)構(gòu)建方法
def test_05_updateEquipStatus_post_rightdata(self):
res = self.client.post('/equip/API/UpdateEquipStatus/', data=self.equipStatus_data)
res_dict = json.loads(str(res.content,'utf-8'))
self.assertEqual(res_dict['ReturnCode'], 200)
def test_08_updateTaskInfo_post_rightdata(self):
res1 = self.client.post('/equip/API/UpdateEquipStatus/', data=self.equipStatus_data)
res = self.client.post('/equip/API/UpdateTaskInfo/', data=self.taskInfo_data)
res_dict = json.loads(str(res.content,'utf-8'))
self.assertEqual(res_dict['ReturnCode'], 200)
- 注意點(diǎn):構(gòu)建原變量的錯(cuò)誤變量時(shí)蹂安,記得用.copy的方式構(gòu)建椭迎,避免直接賦值,會(huì)改變?cè)瓉淼囊米兞恐械慕Y(jié)果
# 正確的賦值方式
reg_errordata = self.register_data.copy()
reg_errordata['equipType'] = 'TestType2'
# 錯(cuò)誤的賦值方式田盈,self.register_data被改變了
reg_errordata = self.register_data
reg_errordata['equipType'] = 'TestType2'
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者