1. 程式人生 > >Selenium2+python自動化之資料驅動(ddt)

Selenium2+python自動化之資料驅動(ddt)

環境準備
1.安裝ddt模組,開啟cmd輸入pip install ddt線上安裝



資料驅動原理
1.測試資料為多個字典的list型別

2.測試類前加修飾@ddt.ddt

3.case前加修飾@ddt.data()

4.執行後用例會自動載入成三個單獨的用例


# coding:utf-8
import ddt
import unittest
 
# 測試資料
test_data1 = [{"username": "zhangsan", "pwd": "zhangsan"},
             {"username": "lisi", "pwd": "lisi"},
             {"username": "wangwu", "pwd": "wangwu"},
             ]
test_data2 = [{"username": "wukong", "pwd": "wukong"},
             {"username": "wuneng", "pwd": "woneng"},
             {"username": "wujing", "pwd": "wujing"},
             ]
 
 
 
@ddt.ddt
class Test(unittest.TestCase):
    def setUp(self):
        print("Start!")
 
    def tearDown(self):
        print("end!")
 
    @ddt.data(*test_data1)
    def test_ddt1(self, data):
        print(data)
 
    @ddt.data(*test_data2)
    def test_ddt2(self, data):
        print(data)
 
 
if __name__ == "__main__":
    unittest.main()

selenium資料驅動案例以登入的方法為例子:從上一篇封裝的excel方法裡面讀取資料,作為測試資料:http://www.cnblogs.com/lingzeng86/p/6793398.html(就是匯入的excelunit包)
# coding:utf-8
import ddt
import time
import excelunit
import unittest
from selenium import webdriver
 
# 測試資料
data = excelunit.ExcelUtil("test.xlsx", "Sheet2")
testData = data.dict_data()
print testData
 
 
@ddt.ddt
class Bolg(unittest.TestCase):
    """登入部落格"""
    def setUp(self):
        self.driver = webdriver.Chrome()
        url = "https://passport.cnblogs.com/user/signin"
        self.driver.get(url)
        self.driver.implicitly_wait(10)
 
    def login(self, username, psw):
        """登入方法,賬號和密碼引數化"""
        self.driver.find_element_by_id("input1").send_keys(username)
        self.driver.find_element_by_id("input2").send_keys(psw)
        self.driver.find_element_by_id("signin").click()
        time.sleep(3)
 
    def is_login_sucess(self):
        """判斷是否獲取到登入賬戶名稱"""
        try:
            text = self.driver.find_element_by_id("lnk_current_user").text
            print text
            return True
        except:
            return False
 
    @ddt.data(*testData)
    def test_login(self, data):
        """登入案例參考"""
        print ("當前測試資料%s" % data)
        # 呼叫登入方法
        self.login(data["username"], data["password"])
        # 判斷結果
        result = self.is_login_sucess()
        self.assertTrue(result)
 
    def tearDown(self):
        self.driver.quit()
 
 
if __name__ == "__main__":
    unittest.main()