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)面部識別的方法詳解
人臉識別正在成為軟件開發(fā)中的一種趨勢。它有助于識別人臉并使應(yīng)用程序更加健壯。本文將使用python和face_recognition庫創(chuàng)建一個(gè)簡單的人臉識別,需要的可以參考一下2022-05-05
python實(shí)現(xiàn)簡單的飛機(jī)大戰(zhàn)
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)簡單的飛機(jī)大戰(zhàn),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-05-05
Python簡單實(shí)現(xiàn)gif動(dòng)圖倒放示例
這篇文章主要為大家介紹了Python簡單實(shí)現(xiàn)gif動(dòng)圖倒放的示例過程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05
python爬蟲 線程池創(chuàng)建并獲取文件代碼實(shí)例
這篇文章主要介紹了python爬蟲 線程池創(chuàng)建并獲取文件代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-09-09
python利用elaphe制作二維條形碼實(shí)現(xiàn)代碼
條形碼的應(yīng)用將會(huì)越來越廣泛,看到了一篇文章,寫的挺好的!用手機(jī)拍二維碼,查二維碼確實(shí)很爽!這將成為一種潮流2012-05-05
Python 比較文本相似性的方法(difflib,Levenshtein)
今天小編就為大家分享一篇Python 比較文本相似性的方法(difflib,Levenshtein),具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-10-10
selenium獲取元素定位的方法總結(jié)(動(dòng)態(tài)獲取元素)
要想操作一個(gè)元素,首先應(yīng)該識別這個(gè)元素,人有各種的特征(屬性),可以通過其特征找到人,同理,界面的某個(gè)元素會(huì)有各種的特征(屬性),可以通過這個(gè)屬性找到這對象,本文給大家介紹了python?selenium獲取元素定位的8種方法,需要的朋友可以參考下2024-02-02

