您的位置:首页 > 编程语言 > Python开发

Selenium2+python自动化之数据驱动(ddt)

2017-07-19 17:18 756 查看
http://www.cnblogs.com/lingzeng86/p/6790827.html

环境准备
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()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: