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