selenium+python自動化97--unittest參數化(paramunittest)

來源:互聯網
上載者:User

標籤:並且   demo   使用者   字典   python3.6   bar   main   顯示   方案   

前言

paramunittest是unittest實現參數化的一個專門的模組,可以傳入多組參數,自動產生多個用例
前面講資料驅動的時候,用ddt可以解決多組資料傳入,自動產生多個測試案例。本篇繼續介紹另外一個參數化的架構paramunittest,也能實現一樣的效果。

環境準備

1.先pip 下載安裝 paramunittest

pip install paramunittest

官方文檔

1.官方文檔地址:https://pypi.python.org/pypi/ParamUnittest/

2.github源碼:https://github.com/rik0/ParamUnittest

3.官方文檔上給出了2個使用案例,以下兩種方法都是可以的,小編傾向於第二種,更容易理解一些,這裡注意了,在pycharm裡面啟動並執行時候,最後滑鼠要放到if下方執行。

4.加上這個參數verbosity=2是為了顯示用例執行詳情

verbosity=2

import unittestimport paramunittest# 方案一@paramunittest.parametrized(    ('1', '2'),    #(4, 3),    ('2', '3'),    (('4', ), {'b': '5'}),    ((), {'a': 5, 'b': 6}),    {'a': 5, 'b': 6},)class TestFoo(paramunittest.ParametrizedTestCase):    def setParameters(self, a, b):        self.a = a        self.b = b    def testLess(self):        self.assertLess(self.a, self.b)# 方案二@paramunittest.parametrized(    ('1', '2'),    #(4, 3),    ('2', '3'),    (('4', ), {'b': '5'}),    ((), {'a': 5, 'b': 6}),    {'a': 5, 'b': 6},)class TestBar(unittest.TestCase):    def setParameters(self, a, b):        self.a = a        self.b = b    def testLess(self):        self.assertLess(self.a, self.b)        if __name__ == "__main__":    unittest.main(verbosity=2)
實踐案例

1.從上面官方文檔給的案例可以看出,參數可以穿元組也可以傳字典,先傳字典參數,類似於如下這種一組參數:

{"user": "admin", "psw": "123", "result": "true"}

2.注意這裡接受參數的時候,必須要定義setParameters這個方法,並且只能是這個名稱。括弧後面的參數分別接受傳入的參數名稱。前面定義的是字典,那參數就跟前面字典的key保持一致

import unittestimport paramunittestimport time# python3.6# 上海-悠悠@paramunittest.parametrized(    {"user": "admin", "psw": "123", "result": "true"},    {"user": "admin1", "psw": "1234", "result": "true"},    {"user": "admin2", "psw": "1234", "result": "true"},    {"user": "admin3", "psw": "1234", "result": "true"},    {"user": "admin4", "psw": "1234", "result": "true"},    {"user": "admin5", "psw": "1234", "result": "true"},    {"user": "admin6", "psw": "1234", "result": "true"},    {"user": "admin7", "psw": "1234", "result": "true"},    {"user": "admin8", "psw": "1234", "result": "true"},    {"user": "admin9", "psw": "1234", "result": "true"},    {"user": "admin10", "psw": "1234", "result": "true"},    {"user": "admin11", "psw": "1234", "result": "true"},)class TestDemo(unittest.TestCase):    def setParameters(self, user, psw, result):        '''這裡注意了,user, psw, result三個參數和前面定義的字典一一對應'''        self.user = user        self.user = psw        self.result = result    def testcase(self):        print("開始執行用例:--------------")        time.sleep(0.5)        print("輸入使用者名稱:%s" % self.user)        print("輸入密碼:%s" % self.user)        print("期望結果:%s " % self.result)        time.sleep(0.5)        self.assertTrue(self.result == "true")if __name__ == "__main__":    unittest.main(verbosity=2)

3.執行結果:

開始執行用例:--------------testcase (paramunittest.TestDemo_0) ... 輸入使用者名稱:123輸入密碼:123期望結果:true oktestcase (paramunittest.TestDemo_1) ... 開始執行用例:--------------輸入使用者名稱:1234輸入密碼:1234期望結果:true oktestcase (paramunittest.TestDemo_10) ... 開始執行用例:--------------輸入使用者名稱:1234輸入密碼:1234期望結果:true 開始執行用例:--------------oktestcase (paramunittest.TestDemo_11) ... 輸入使用者名稱:1234輸入密碼:1234期望結果:true 開始執行用例:--------------oktestcase (paramunittest.TestDemo_2) ... 輸入使用者名稱:1234輸入密碼:1234期望結果:true ok開始執行用例:--------------testcase (paramunittest.TestDemo_3) ... 輸入使用者名稱:1234輸入密碼:1234期望結果:true oktestcase (paramunittest.TestDemo_4) ... 開始執行用例:--------------輸入使用者名稱:1234輸入密碼:1234期望結果:true oktestcase (paramunittest.TestDemo_5) ... 開始執行用例:--------------輸入使用者名稱:1234輸入密碼:1234期望結果:true 開始執行用例:--------------oktestcase (paramunittest.TestDemo_6) ... 輸入使用者名稱:1234輸入密碼:1234期望結果:true 開始執行用例:--------------oktestcase (paramunittest.TestDemo_7) ... 輸入使用者名稱:1234輸入密碼:1234期望結果:true ok開始執行用例:--------------testcase (paramunittest.TestDemo_8) ... 輸入使用者名稱:1234輸入密碼:1234期望結果:true oktestcase (paramunittest.TestDemo_9) ... 開始執行用例:--------------輸入使用者名稱:1234輸入密碼:1234期望結果:true ok----------------------------------------------------------------------Ran 12 tests in 12.001s

4.注意了,這裡的執行順序是先執行0,1,再執行10,11,12依次來的,別問我為什麼,也別找我解決,設計如此,之前ddt架構也是有同樣的問題。

5.除了傳字典參數,傳元群組類型的也是可以的

@paramunittest.parametrized(    ("admin", "123", "true"),    ("admin1", "123", "true"),    ("admin2", "123", "true"),    ("admin3", "123", "true"),    ("admin4", "123", "true"),    ("admin5", "123", "true"),    ("admin6", "123", "true"),    ("admin7", "123", "true"),    ("admin8", "123", "true"),    ("admin9", "123", "true"),    ("admin10", "123", "true"),    ("admin11", "123", "true"),    ("admin12", "123", "true"))
產生html報告

1.unittest產生html報告參考前面介紹的這篇http://www.cnblogs.com/yoyoketang/p/6680503.html就可以了,這裡就不重複介紹了,實現的如下:

selenium+python自動化97--unittest參數化(paramunittest)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.