odoo13單元測(cè)試編寫

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


圖1-test文件位置

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


圖2-test文件結(jié)構(gòu)

第三步:開(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所示:


圖3-啟動(dòng)測(cè)試

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所示:


圖4-預(yù)置單據(jù)1

可以使用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所示:


圖5-預(yù)置單據(jù)2

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所示:


圖6-約束函數(shù)測(cè)試

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


圖7-create基類

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


圖8- 帶返回值的私有函數(shù)

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所示:


圖9-普通類型

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


圖10-m2o類型

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


圖11-o2m類型1


圖12-o2m類型2

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


圖13-m2m類型

第四步:?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所示:


圖14-覆蓋率

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

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容