日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

unittest参数化(paramunittest)

發布時間:2024/6/21 综合教程 30 生活家
生活随笔 收集整理的這篇文章主要介紹了 unittest参数化(paramunittest) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. 前言
unittest參數化是指對一個unittest中的測試方法采用多組數據引入進行測試;
常用的參數化方法有ddt、paramunittes

2. 傳入的參數類型
傳入的參數類型可以是元組,列表,字典,對象,函數

3.實現方法
需要導入unittest,paramunittest,通過@paramunittest.parametrized裝飾器傳給調用者
3.1. 實現方法1:通過繼承paramunittest.ParametrizedTestCase類執行案例
傳入元組數據

import unittest
import paramunittest

#傳入的是元組數據
@paramunittest.parametrized(
    (3,3),
    (7,4)
) 

class TestDemo(paramunittest.ParametrizedTestCase):#通過繼承paramunittest.ParametrizedTestCase類執行測試案例
    def setParameters(self,numa,numb): #通過setParameters方法接收裝飾器傳遞過來的參數
        self.numa = numa
        self.numb = numb
    def test_case(self):
        print('%s和%s兩個數進行比較'%(self.numa,self.numb))
        self.assertGreater(self.numa,self.numb)

if __name__ == '__main__':
    unittest.main()

傳入列表數據

import unittest
import paramunittest

#參數類型是列表
@paramunittest.parametrized(
    [3,3],
    [7,4]
)

class TestDemo(paramunittest.ParametrizedTestCase):
    def setParameters(self,numa,numb):
        self.numa = numa
        self.numb = numb
    def test_case(self):
        print('%s和%s兩個數進行比較'%(self.numa,self.numb))
        self.assertGreater(self.numa,self.numb)

if __name__ == '__main__':
    unittest.main()

傳入字典數據

import unittest
import paramunittest

#參數類型字典
@paramunittest.parametrized(
    {'numa' : 4,'numb' : 3},
    {'numa' : 9,'numb' : 8}
)


class TestDemo(paramunittest.ParametrizedTestCase):
    '''前面定義的是字典,那參數就跟前面字典的key保持一致'''
    def setParameters(self,numa,numb):
        self.numa = numa
        self.numb = numb
    def test_case(self):
        print('%s和%s兩個數進行比較'%(self.numa,self.numb))
        self.assertGreater(self.numa,self.numb)

if __name__ == '__main__':
    unittest.main()

傳入對象,注意,裝飾器傳遞參數的時候需要在對象前加個*

import unittest
import paramunittest

#參數類型是個對象
test_data = [{'numa' : 4,'numb' : 3},{'numa' : 9,'numb' : 8}]
@paramunittest.parametrized(
    *test_data #傳遞對象需要加個*
)

class TestDemo(paramunittest.ParametrizedTestCase):
    def setParameters(self,numa,numb):
        self.numa = numa
        self.numb = numb
    def test_case(self):
        print('%s和%s兩個數進行比較'%(self.numa,self.numb))
        self.assertGreater(self.numa,self.numb)

if __name__ == '__main__':
    unittest.main()

傳入函數,注意,裝飾器傳遞參數的時候需要在方法前加個*

import unittest
import paramunittest

#通過函數傳入測試參數
def testdata():
    return [{'numa' : 4,'numb' : 3},{'numa' : 9,'numb' : 8}]

@paramunittest.parametrized(
    *testdata()
)

class TestDemo(paramunittest.ParametrizedTestCase):
    '''前面定義的是字典,那參數就跟前面字典的key保持一致'''
    def setParameters(self,numa,numb):
        self.numa = numa
        self.numb = numb
    def test_case(self):
        print('%s和%s兩個數進行比較'%(self.numa,self.numb))
        self.assertGreater(self.numa,self.numb)

if __name__ == '__main__':
    unittest.main()

3.2. 實現方法2:通過繼承unittest.TestCase類執行案例

import unittest
import paramunittest

#通過函數傳入測試參數
def testdata():
    return [{'numa' : 4,'numb' : 3},{'numa' : 9,'numb' : 8}]

@paramunittest.parametrized(
    *testdata()
)

class TestDemo(unittest.TestCase):
    def setParameters(self,numa,numb):
        self.numa = numa
        self.numb = numb
    def test_case(self):
        print('%s和%s兩個數進行比較'%(self.numa,self.numb))
        self.assertGreater(self.numa,self.numb)

if __name__ == '__main__':
    unittest.main()

總結

以上是生活随笔為你收集整理的unittest参数化(paramunittest)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。