第一步:在自己想要測(cè)試的模塊下創(chuàng)建一個(gè)test文件夾,用來(lái)存放測(cè)試文件,如圖1:

第二步:在test文件夾中創(chuàng)建py文件,用來(lái)編寫測(cè)試用例代碼,如圖2所示:

第三步:開(kāi)始編寫測(cè)試用例
1、數(shù)據(jù)準(zhǔn)備:開(kāi)始編寫測(cè)試用例前需要先準(zhǔn)備好數(shù)據(jù),有兩種方法:a.在demo中事先預(yù)置好數(shù)據(jù)? ? b.在代碼中使用create方法創(chuàng)建數(shù)據(jù),這里采用的是使用create創(chuàng)建的方式。
2、導(dǎo)入odoo測(cè)試類TransactionCase,并以setUp()函數(shù)啟動(dòng)測(cè)試代碼,如圖3所示:

tagged裝飾器可以用來(lái)規(guī)定該測(cè)試用例的執(zhí)行時(shí)間,默認(rèn)是安裝/升級(jí)完該模塊后立即執(zhí)行測(cè)試用例,如果用例中使用的預(yù)置數(shù)據(jù)有該模塊安裝之后才安裝的,可以使用如圖3的裝飾器使俺測(cè)試用例在所有模塊安裝/升級(jí)完后再執(zhí)行,其中“-”的前綴代表著刪除該標(biāo)簽。tagged還有其他的標(biāo)簽,需要的可以自行去查看官網(wǎng)了解用法。
3、可以在setUp()函數(shù)里面預(yù)置好接下來(lái)會(huì)使用的數(shù)據(jù),如圖4所示:

可以使用self.env.ref(模塊名稱+預(yù)置記錄id)獲取到預(yù)置數(shù)據(jù)的記錄。
直接使用create方法創(chuàng)建單據(jù),建議先創(chuàng)建子表記錄再創(chuàng)建主表,然后對(duì)主表的o2m字段使用(6,0,)插入子表明細(xì)行記錄,或者直接使用(0,0,)創(chuàng)建記錄,注意:(0,0,)創(chuàng)建時(shí)創(chuàng)建的是一個(gè)字典,如圖5所示:

4、準(zhǔn)備好數(shù)據(jù)以后就可以開(kāi)始測(cè)試代碼了,主要有五類:constrains約束、onchange、create基類、帶返回值的私有函數(shù)和compute字段。
constrains約束:以with self.assertRaises(ValidationError):觸發(fā)會(huì)拋錯(cuò)的約束,注意:ValidationError與函數(shù)拋錯(cuò)的錯(cuò)誤類型保持一致。如圖6所示:

create基類:直接創(chuàng)建記錄觸發(fā)函數(shù),如圖7所示:

帶返回值的私有函數(shù):調(diào)用模型里的函數(shù),并且傳入相應(yīng)的參數(shù),使用斷言來(lái)判斷測(cè)試的結(jié)果是否會(huì)跟預(yù)想生成的結(jié)果一致,如圖8所示:

onchange:onchange的觸發(fā)需要對(duì)數(shù)據(jù)記錄進(jìn)行form處理,然后再進(jìn)行更改值得操作,主要分為普通類型,m2o類型,o2m類型,m2m類型
a.普通類型字段,直接進(jìn)行賦值,記住再更改完成后要記得調(diào)用sava函數(shù)進(jìn)行保存,或者使用with語(yǔ)法進(jìn)行編寫,可以自動(dòng)提交(下同),如圖9所示:

b.m2o類型,需要給該類型賦值記錄集,而不是一個(gè)id,如圖10所示:

c.o2m類型,需要使用new函數(shù)進(jìn)行添加,使用edit進(jìn)行編輯,使用remove進(jìn)行刪除,如圖11、12所示:


d.m2m類型,需要使用add函數(shù)進(jìn)行添加,使用remove進(jìn)行刪除,如圖13所示:

第四步:?jiǎn)⒂脺y(cè)試用例
命令:coverage run --source=/opt/odoo/platform/ps_ber /opt/odoo/start -c /opt/odoo/config/pscloud-dev.conf -d test-420 --stop-after-init -i ps_ber --test-enable --log-level=test
/opt/odoo/platform/ps_ber:需要測(cè)試的模塊路徑
/opt/odoo/start -c /opt/odoo/config/pscloud-dev.conf:配置文件路徑
-d test-420:指向數(shù)據(jù)庫(kù)
?-i/u ps_ber:創(chuàng)建/升級(jí)ps_ber模塊
--test-enable:?jiǎn)?dòng)測(cè)試
第五步:查看測(cè)試覆蓋率結(jié)果
coverage report:查看該模塊的測(cè)試覆蓋率,如圖14所示:

coverage html:生成可視化的文件,可以詳細(xì)查看哪些代碼有被測(cè)試代碼跑到