码迷,mamicode.com
首页 > 其他好文 > 详细

数据驱动ddt+excel数据读取

时间:2017-12-23 19:06:54      阅读:2665      评论:0      收藏:0      [点我收藏+]

标签:ddt   name   init   分享   result   method   登录   equal   失败   

我们可以将测试数据用excel存储,再用ddt去传入,不过我们需要安装对应的库,因为python是无法操作excel的

1.安装第三方库xlrd

技术分享图片

2.创建一个excel表格,将需要测试的数据保存

技术分享图片

3.封装读取excel

# coding:utf-8
import xlrd
class ExcelUtil():
def __init__(self, excelPath, sheetName="Sheet1"):
self.data = xlrd.open_workbook(excelPath)
self.table = self.data.sheet_by_name(sheetName)
# 获取第一行作为key值
self.keys = self.table.row_values(0)
# 获取总行数
self.rowNum = self.table.nrows
# 获取总列数
self.colNum = self.table.ncols
def dict_data(self):
if self.rowNum <= 1:
print("总行数小于1")
else:
r = []
j=1
for i in range(self.rowNum-1):
s = {}
# 从第二行取对应values值
values = self.table.row_values(j)
for x in range(self.colNum):
s[self.keys[x]] = values[x]
r.append(s)
j+=1
return r
if __name__ == "__main__":
filepath = "data_excel"
#sheetName = "Sheet1"
data = ExcelUtil(filepath)
print data.dict_data()
for i in data.dict_data():
print i

4.ddt和excel结合

from selenium import webdriver
from common.base import BasePage
from page.page_login import LoginPage,login_url
from common.read_excel_ddt import ExcelUtil
import unittest
import ddt

#用excle表格传入
filepath="data_excel.xlsx"
data=ExcelUtil(filepath)
datadict=data.dict_data()
print datadict

@ddt.ddt
class Login_test(unittest.TestCase):
‘‘‘登录页面的测试用例‘‘‘

@classmethod
def setUpClass(cls):
#只打开一次浏览器
cls.driver=webdriver.Firefox()
#实例化page_login中的LoginPage类
cls.login_driver=LoginPage(cls.driver)
cls.driver.open(login_url)

def setUp(self):
#每次都从登录页开始
self.driver.get(login_url)

def tearDown(self):
#每次清空登录的cookie,数据还原
self.driver.delete_all_cookies()
@classmethod
def tearDownClass(cls):
#关闭浏览器
cls.driver.quit()

def login_case(self,user,psw,exc):
‘‘‘登录的流程‘‘‘
self.login_driver.input_username(user)
self.login_driver.input_password(psw)
self.login_driver.click_submit()
result=self.login_driver.is_login_sucess()#获取结果
#如果用excel的话 由于返回的是0,1所以需要用bool
except_result=bool(exc)
self.assertEqual(result,except_result)#断言


   @ddt.data(*datadict)#把excel中的数据挨个传入
def test_login_01(self,data):
‘‘‘登陆失败用例:输入正确的账户,错误的密码‘‘‘
     self.login_case(data["username"],data["psw"],data["expect"])
    def test_login_02(self,data):
‘‘‘登陆失败用例:输入正确的账户,正确的密码‘‘‘
    self.login_case(data["username"],data["psw"],data["expect"])

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

数据驱动ddt+excel数据读取

标签:ddt   name   init   分享   result   method   登录   equal   失败   

原文地址:http://www.cnblogs.com/linbao/p/8093924.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!