- 数据驱动,简单来说,就是将数据封装起来,然后传递给自动化脚本调用分装好的测试数据,就进行测试
- 这里我们介绍的是ddt类型的数据驱动,首先使用 pip install ddt 命令进行安装,下面进行代码演示
from selenium import webdriver
import unittest
import time
from ddt import data, unpack, ddt
def GetData():
"""将数据放到列表中,可以是元祖,字典等,可迭代器"""
return [
['', '', '请输入密码'],
['', '123456', '请输入手机号或邮箱'],
['15512345678', '', '请输入密码'],
]
@ddt
class ZhLogin(unittest.TestCase):
“““ddt用法就是直接在类的上面直接使用@ddt”””
def setUp(self):
self.driver = webdriver.Chrome()
self.driver.maximize_window()
self.driver.get("https://www.zhihu.com/signin?next=%2F")
self.driver.implicitly_wait(15)
def tearDown(self):
self.driver.quit()
@data(*GetData())
@unpack
def test_zh(self, username, password, result):
"""登录知乎的几种情况,上面两个主要进行对数据进行拆包,获取封装的测试数据"""
self.driver.find_element_by_xpath('//*[@id="root"]/div/main/div/div/div/div[1]/div/form/div[1]/div[2]').click()
self.driver.find_element_by_name('username').send_keys(username)
self.driver.find_element_by_name('password').send_keys(password)
self.driver.find_element_by_xpath('//*[@id="root"]/div/main/div/div/div/div[1]/div/form/button').click()
time.sleep(2)
divText1 = self.driver.find_element_by_xpath(
'//*[@id="root"]/div/main/div/div/div/div[1]/div/form/div[2]/div/div').text
divText2 = self.driver.find_element_by_xpath(
'//*[@id="root"]/div/main/div/div/div/div[1]/div/form/div[3]/div/div').text
if result in ('请输入密码', '请输入正确的手机号'):
self.assertEqual(divText2, result)
elif result == '请输入手机号或邮箱':
self.assertEqual(divText1, result)
if __name__ == '__main__':
unittest.main(verbosity=2)