Selenium之DDT數據驅動測試實戰。

DDT模塊安裝:

打開cmd命令提示符,輸入pip install ddt進行安裝,如下圖所示。

DDT模塊裝飾器:

測試類上使用:

@ddt.ddt 裝飾器:

測試用例上使用:

@ddt.data 裝飾器:把參數作爲測試數據

@ddt.unpack 裝飾器:若參數是元組或列表解析成多個參數。

案例代碼:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import ddt, unittest, time


def read_data():
    return [['正確賬號', '正確密碼', '登錄成功!'],
            ['admin', '', '請輸入密碼!'],
            ['', '123456', '請輸入賬號!']]


@ddt.ddt
class Test_Login(unittest.TestCase):
    '''檢驗搜狐郵箱登錄'''

    def setUp(self):
        self.driver = webdriver.Chrome()
        self.test_url = "https://mail.sohu.com/fe/#/login"

    def tearDown(self):
        self.driver.quit()

    def by_xpath(self, usernameloc):
        return self.driver.find_element_by_xpath(usernameloc)

    def get_assert_text(self):
        '''獲取驗證信息'''
        try:
            time.sleep(2)
            # loctor = (By.CSS_SELECTOR, ".tipHolder.ng-binding")
            loctor=(By.XPATH,"//html[@id='ng-app']//div[@id='addSkinClass']//span[@title='liuxm_0522']")
            WebDriverWait(self.driver, 5, 0.5).until(EC.presence_of_element_located((loctor)))
            return self.by_css(".tipHolder.ng-binding").text
        except Exception as message:
            print('元素定位報錯,報錯原因:%s' % message)

    @ddt.data(*read_data())
    @ddt.unpack
    def sohu_login(self, username, password, text):
        self.driver.get(self.test_url)
        time.sleep(3)
        self.by_xpath("//html[@id='ng-app']//div[@id='theme']//div[@class='ipt-box pos-r']/input[@type='text']").clear()
        self.by_xpath(
            "//html[@id='ng-app']//div[@id='theme']//div[@class='ipt-box pos-r']/input[@type='text']").send_keys(
            username)
        self.by_xpath("//html[@id='ng-app']//div[@id='theme']//input[@type='password']").send_keys(password)
        self.by_xpath("//html[@id='ng-app']//div[@id='theme']//input[@value='登 錄']").click()
        time.sleep(1)

        self.driver.refresh()
        self.assertEqual(self.get_assert_text(), text)


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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章