在使用Django框架開發代碼中,我們寫好代碼後,運行開發服務器,在自己的瀏覽器上點擊測試查看代碼是否正常是一件非常麻煩的事情。因爲當我們代碼有改動,可能會影響本來正常的功能,這樣以前的功能又得重複測試一遍,非常不方便。
而在Django框架中他本身帶有完善的單元測試。我們可以對開發的每一個功能進行單元測試。這樣只需要一個命令行就可以測試功能是否都是正常的。
測試的功能:就是檢查代碼是否按照自己的預期那樣運行。
測試的重要性:單元測試絕不是浪費時間的無用功,它是高質量代碼的保障之一,在軟件開發的一節中值得投入精力和時間去把好這一關。
開始unittest的步驟:
1.創建並且備份一個測試數據庫。數據庫表名和表中字段名需要和原始數據庫中的一模一樣。
2.測試數據中的用戶需要所有權限。
3.修改setting.py文件:添加一個測試數據庫;
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'cmms',
'HOST': '127.0.0.1',
'TEST':{
'NAME':'cmms'
},
'USER': 'postgres',
'PASSWORD': 'postgres',
'PORT':'5432'
}
}
4.將migrations文件夾中除__init__.py,__init__.pyc外的文件全部刪除
5.創建遷移文件和執行遷移命令:
sudo python manage.py makemigrations
sudo python manage.py migrate
6.在項目中創建一個test.py文件。
# -*- coding: utf-8 -*-
from django.test import TestCase
from oee_app.wb.shift import Shift
from datetime import datetime as wkdatetime
# Create your tests here.
class ShiftTestCase(TestCase):
def setUp(self):
pass
def test_animals_can_speak(self):
k1='The lion says "roar"'
k2='The cat says "meow"'
self.assertEqual(k1, 'The lion says "roar"')
self.assertEqual(k2, 'The cat says "meow"')
def test_shift(self):
shift=Shift()
utc1 = "2017-11-07T09:00:00.000Z"
utc2 = "2017-11-08T14:30:00.000Z"
UTC_FORMAT= "%Y-%m-%dT%H:%M:%S.%fZ"
startTime=wkdatetime.strptime(utc1, UTC_FORMAT)
endTime=wkdatetime.strptime(utc2, UTC_FORMAT)
terms=shift.get_shift_terms("5523",startTime, endTime)
mysize=len(terms)
self.assertTrue(mysize>0, "test_shift test is ok.")
7.執行代碼python manage.py test --keepdb test
8.測試訪問網址的方法
def test_edit_boc(self):
json_data = {"x-requested-email":"[email protected]","x-requested-ser":"mes_portal","number":2,"boc_key_id":1,"child_part_number":2,"x-requested-site":5528,"parent_boc":0}
res = self.client.post('/asset/machineType/edit_boc/',json_data)
self.assertEqual(res.status_code, 200)