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()