Python unittest單元測試框架實(shí)現(xiàn)參數(shù)化
當(dāng)我們在使用TestNG時(shí),發(fā)現(xiàn)它有一個(gè)非常好用的參數(shù)化功能。當(dāng)你的測試用例有固定的參數(shù)和斷言結(jié)果時(shí),它可以相似用例的節(jié)省用例的個(gè)數(shù)。
例子如下:
import static org.testng.Assert.assertEquals; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; /** * Created by fnngj on 2017/3/19. */ public class Demo { // 定義測試數(shù)據(jù) @DataProvider(name = "data") public Object[][] Users() { return new Object[][] { { 1, 1, 2}, { 2, 2, 5}, { 3, 3, 6}, }; } @Test(dataProvider="data") public void testAdd(int a,int b,int c) { assertEquals(a + b, c); } }
相對而言,Python下面單元測試框架要弱上少,尤其是Python自帶的unittest測試框架,不支持參數(shù)化,不支持多線程執(zhí)行用例,不支持HTML測試報(bào)告的生成...。好再,部分不足我們可以通過unittest擴(kuò)展來滿足需求。比如現(xiàn)在要介紹一個(gè)參數(shù)化的擴(kuò)展。
在沒有參數(shù)化功能的情況下,我們的用例需要這樣編寫。
import unittest class TestAdd(unittest.TestCase): def test_add_01(self): self.assertEqual(1 + 2, 3) def test_add_02(self): self.assertEqual(2 + 2, 5) def test_add_03(self): self.assertEqual(3 + 3, 6) if __name__ == '__main__': unittest.main()
nose-parameterized是一個(gè)針對Python單元測試框架實(shí)現(xiàn)參數(shù)化的擴(kuò)展。同時(shí)支持不同的單元測試框架。
GitHub地址:https://github.com/wolever/nose-parameterized
然后,unittest就可以像TestNG一樣寫用例了。
import unittest from nose_parameterized import parameterized class TestAdd(unittest.TestCase): @parameterized.expand([ ("01",1, 1, 2), ("02",2, 2, 5), ("03",3, 3, 6), ]) def test_add(self, name, a, b, c): self.assertEqual(a + b, c) if __name__ == '__main__': unittest.main(verbosity=2)
執(zhí)行結(jié)果:
test_add_0_01 (__main__.TestAdd) ... ok
test_add_1_02 (__main__.TestAdd) ... FAIL
test_add_2_03 (__main__.TestAdd) ... ok
當(dāng)相同入?yún)⒑蛿嘌越Y(jié)果的用例越多,這種寫法用起來越爽!
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Python實(shí)現(xiàn)EM算法實(shí)例代碼
這篇文章主要給大家介紹了關(guān)于Python實(shí)現(xiàn)EM算法的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10利用Python實(shí)現(xiàn)面部識(shí)別的方法詳解
人臉識(shí)別正在成為軟件開發(fā)中的一種趨勢。它有助于識(shí)別人臉并使應(yīng)用程序更加健壯。本文將使用python和face_recognition庫創(chuàng)建一個(gè)簡單的人臉識(shí)別,需要的可以參考一下2022-05-05python實(shí)現(xiàn)簡單的飛機(jī)大戰(zhàn)
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)簡單的飛機(jī)大戰(zhàn),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-05-05Python簡單實(shí)現(xiàn)gif動(dòng)圖倒放示例
這篇文章主要為大家介紹了Python簡單實(shí)現(xiàn)gif動(dòng)圖倒放的示例過程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05python爬蟲 線程池創(chuàng)建并獲取文件代碼實(shí)例
這篇文章主要介紹了python爬蟲 線程池創(chuàng)建并獲取文件代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-09-09python利用elaphe制作二維條形碼實(shí)現(xiàn)代碼
條形碼的應(yīng)用將會(huì)越來越廣泛,看到了一篇文章,寫的挺好的!用手機(jī)拍二維碼,查二維碼確實(shí)很爽!這將成為一種潮流2012-05-05Python 比較文本相似性的方法(difflib,Levenshtein)
今天小編就為大家分享一篇Python 比較文本相似性的方法(difflib,Levenshtein),具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-10-10selenium獲取元素定位的方法總結(jié)(動(dòng)態(tài)獲取元素)
要想操作一個(gè)元素,首先應(yīng)該識(shí)別這個(gè)元素,人有各種的特征(屬性),可以通過其特征找到人,同理,界面的某個(gè)元素會(huì)有各種的特征(屬性),可以通過這個(gè)屬性找到這對象,本文給大家介紹了python?selenium獲取元素定位的8種方法,需要的朋友可以參考下2024-02-02