pytest(二)兩行代碼就能實現(xiàn)自動化測試嗎? !

但凡有點經驗的python自動化測試工程師或是測試開發(fā)工程師,或多或少都用過unittest。當使用unittest實現(xiàn)測試代碼,首先必須定義一個測試類并繼承unittest.TestCase, 然后在類中實現(xiàn)測試方法。然而在pytest中,卻無需強制使用類聲明,只要一個測試函數即可,就像這樣:


就這樣,兩行就是實現(xiàn)了自動化測試,是不是很簡單。

接下來我們看看,這段代碼是如何在pytest中執(zhí)行的。

首先我們定義了一個測試函數,函數名則以test開頭。這很重要,當你用pytest 運行一個腳本時,它會收集test為前綴的函數名的函數作為測試方法去執(zhí)行。如果我們把test_add改成tes_add,那么pytest就找不到任何測試用例了。

pytest有一套自己發(fā)現(xiàn)測試方法的規(guī)則,后面會細說哦。

之后我們在test_add函數中使用了斷言去判斷測試的檢查點。如果你用過unittest,你知道unittest本身提供了很多斷言函數比如assertEqual等等。而pytest則直接使用assert,少去了還要查找斷言函數的麻煩,讓代碼更加簡單和自由。同時你會發(fā)現(xiàn)斷言如果出錯,錯誤信息如此詳細…當然pytest還提供了異常信息定制化功能。


講到這里,大家是不是覺得這段測試代碼里還缺點什么呢?沒錯,那就是大家熟悉的setup和teardown。pytest測試提供了幾個級別的setup/teardown——模塊,函數,類,方法。


我們定義了方法級別的setup/teardown, 運行結果就是你們看到的,熟悉的配方啊。然而除了傳統(tǒng)的setup/teardown, pytest還提供了一個更強大的功能fixture——使用fixture簡化了初始和清理代碼的工作流程, fixture就像函數,有明確的名稱,測試函數、模塊、類或整個項目中都可以聲明和激活它們。雖然pytest支持傳統(tǒng)的setup/teardown, 但fixture是更加值得去使用的。

現(xiàn)在食材都已經搭配好了,那怎么開燒呢,說白了就是如何運行你的測試代碼如何編寫啦。pytest提供兩種方法,一種就像unittest一樣直接在code里指明,就像這樣


至此,小艾已經為大家展示了測試框架中最重要的幾個特性,測試方法、斷言,異常信息,初始/清理,運行,測試報告。從下章開始小艾將會一一展開這些特性,詳細介紹它們的用法。

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

相關閱讀更多精彩內容

友情鏈接更多精彩內容