Pytest-參數化和unittest-ddt的對比(兩種數據驅動的對比)


參數化表達式:                                                                                          ddt表達式

@pytest.mark.parametrize(“參數名”, 列表數據)                        @ddt.ddt

def(參數名):                                                                            class xxx(unittest.TestCase):       #一定要繼承unitest.TestCase

         執行體                                                                                     @ddt.data(*LD.wrong_datas)     #列表要解包

         列表[“”] ……                                                                            def  test_login_failed_by_wrongData(self, case):   #參數接收列表中的一條數據 參數名隨意

                                                                                                                     執行體

                                                                                                                     列表[“”] ……  

pytest中的參數化的解釋:

參數名:用來接收列表中的每一組數據,並作為測試用例的參數,所以用例方法中用來接收每一組數據的參數名要和此處相同。

Eg:

@pytest.mark.parametrize('case', LD.wrong_datas)
def test_login_failed_by_wrongData(self, case):
    self.lp.login(case["user"], case["passwd"])
    self.assertEqual(case["check"], self.lp.get_error_msg())
 
備注:LD文件中wrong_datas = [
    {"user": "", "passwd": "python", "check": "請輸入手機號"},
    {"user": "18684720553", "passwd": "", "check": "請輸入密碼"},
    {"user": "186847205", "passwd": "python", "check": "請輸入正確的手機號"}
]

常用場景:一般都是把數據放到字典中,多組數據一起放到列表中,再通過Pytest參數化實現數據驅動。

 

了解下:參數名中可包括多個參數,可進一步把每組接收到的數據再次解包 一一賦值。(高級用法 但用得少 一般還是列表中數據格式為字典就可替代這種用法)

 

 

 

騷操作 迪卡爾積-了解下即可 很少用到

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM