通常寫完庫的測試用例,總要跑跑覆蓋率,看看測試用例寫得如何,jest剛好也支持查看覆蓋率,對應(yīng)的指令是:jest --coverage。當(dāng)然在繼續(xù)往下看,如果還沒搭建jest環(huán)境,可以先搭建,畢竟實(shí)踐出真知。
編寫測試用例
如何編寫測試用例,已經(jīng)存在很多教程,官方也有非常多例子,因此這里我們只寫兩種很常用的:同步代碼和異步代碼的測試用例。
同步代碼
// sum.test.ts
const sum = (a:number, b:number) => a + b
test('兩數(shù)相加', () => {
// 推斷 1 + 1 = 2
expect(sum(1, 1)).toBe(2)
})
異步代碼
// async.test.ts
const getData = (type: string) => type === 'get'?Promise.resolve(1):Promise.reject(2)
test('測試異步', async () => {
expect.assertions(1);
await expect(getData('get')).resolves.toEqual(1)
})
關(guān)于如何編寫更多場景的測試用例,可前往官網(wǎng)查看。下面看看如何解讀覆蓋率。
解讀覆蓋率
當(dāng)我們執(zhí)行jest --coverage會在當(dāng)前文件生成覆蓋率文件夾coverage,如下:
這時(shí)候我們可以找到lcov-report/index.html文件,然后在瀏覽器中打開,此時(shí)我們便可以查看當(dāng)前項(xiàng)目的測試用例書寫覆蓋率了。這里以我寫的工具庫為例子:
表格中羅列了所有工具類庫的測試用例,存在幾下幾個(gè)指標(biāo):
1、Statements 語句覆蓋率,它其實(shí)對應(yīng)的就是js語法上的語句,js解析成ast數(shù)中類型為statement。
2、Branches 分支覆蓋率,通俗點(diǎn)理解就是if/else這類條件
3、Functions 函數(shù)覆蓋率
4、Lines 行數(shù)覆蓋率,就是代碼執(zhí)行了多少行
文件中,我們發(fā)現(xiàn)url-utils文件中的Branches覆蓋率不高,才達(dá)到64.29%,那么如何查看具體哪些代碼沒覆蓋到呢?很簡單,點(diǎn)擊對應(yīng)的文件名就可以進(jìn)入查看了,效果如下:
圖中黃色塊代表的是測試用例沒有測試到的方式,當(dāng)然你也可以按快捷鍵n或者j去查看下一個(gè)沒有被覆蓋到的代碼塊。圖中黃塊未覆蓋到的,剛好也正是條件語句,符合Branchs的測試覆蓋率。
總結(jié)
至此便完成了基本的測試用例編寫,以及測試用例生成,并且能夠查看測試用例覆蓋率如何,以此來完善整體測試用例的編寫,幫助代碼達(dá)到完善健碩的目的。關(guān)于覆蓋率是如何生成的,它的原理是怎么樣的呢?下一篇再說。
現(xiàn)在我邀請你進(jìn)入我們的軟件測試學(xué)習(xí)交流群:【
746506216
】,備注“入群”, 大家可以一起探討交流軟件測試,共同學(xué)習(xí)軟件測試技術(shù)、面試等軟件測試方方面面,還會有免費(fèi)直播課,收獲更多測試技巧,我們一起進(jìn)階Python自動化測試/測試開發(fā),走向高薪之路。
文章來源:http://www.zghlxwxcb.cn/news/detail-437131.html
喜歡軟件測試的小伙伴們,如果我的博客對你有幫助、如果你喜歡我的博客內(nèi)容,請 “點(diǎn)贊” “評論” “收藏” 一 鍵三連哦!文章來源地址http://www.zghlxwxcb.cn/news/detail-437131.html
到了這里,關(guān)于Jest | 測試框架實(shí)戰(zhàn)之-測試用例編寫與覆蓋率解讀的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!