5、使用Excel进行数据驱动测试
测试逻辑:
(1)打开百度首页,从Excel文件中读取测试数据作为搜索关键词
(2)在搜索输入框中输入读取出搜索关键词
(3)单击搜索按钮
(4)断言搜索结果页面中是否出Excel文件中提供的预期内容,包含则认为测试执行成功,否则认为失败
测试数据准备:
在本地磁盘D:\test\DataDrivenTesting目录中新建一个“测试数据.xlsx”,工作表名为“搜索数据表”,内容如下“
序号搜索词期望结果
1 邓肯 蒂姆
2 乔丹 迈克尔
3 库里 斯蒂芬
实例代码:
在Pycharm中新建一个ExcelDataDrivenProject的Python工程,工程下新建两个文件,文件名分别为ExcelUtil.py和DataDrivenByExcel.py和DataDrivenByExcel.py
ExcelUtil.py文件用于编写读取Excel的脚本,具体内容如下:
#encoding=utf-8
from openpyxl importload_workbookclassParseExcel(object):def __init__(self, excelPath, sheetName):#将要读取的excel加载到内存
self.wb =load_workbook(excelPath)#通过工作表名称获取一个工作表对象
self.sheet =self.wb.get_sheet_by_name(sheetName)#获取工作表中存在数据的区域的最大行号
self.maxRowNum =self.sheet.max_rowdefgetDatasFromSheet(self):#用于存放从工作表中读取出来的数据
dataList =[]for line inself.sheet.rows:#遍历工作表中数据区域的每一行,
#并将每行中各个单元格的数据取出存于列表tmpList中,
#然后再将存放一行数据的列表添加到最终数据列表dataList中
tmpList =[]
tmpList.append(line[1].value)
tmpList.append(line[2].value)
dataList.append(tmpList)#将获取工作表中的所有数据的迭代对象返回
#因为工作表中的第一行是标题行,所以需要去掉
return dataList[1:]if __name__ == '__main__':
excelPath= u'D:\\test\\DataDrivenTesting\\测试数据.xlsx'sheetName= u"搜索数据表"pe=ParseExcel(excelPath, sheetName)printpe.getDatasFromSheet()for i inpe.getDatasFromSheet():print i[0], i[1]
DataDrivenByExcel.py文件用于编写数据驱动测试脚本代码,具体内容如下:
#encoding=utf-8
importunittest,timeimportlogging,tracebackimportddtfrom selenium importwebdriverfrom selenium.common.exceptions importNoSuchElementExceptionfrom ExcelUtil importParseExcel#初始化日志对象
logging.basicConfig(#日志级别
level =logging.INFO,#日志格式
#时间、代码所在文件名、代码行号、日志级别名、日志信息
format = "%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s",#打印日志的时间
datefmt = "%a,%d %b %Y %H: %M: %S",#日志文件存放的目录(目录必须存在)及日志文件名
filename = "D:\\test\\DataDrivenTesting\\report.log",#打开日志文件的方式
filemode = "w")
excelPath= u"D:\\test\\DataDrivenTesting\\测试数据.xlsx"sheetName= u"搜索数据表"
#ParseExcel类的实例对象
excel =ParseExcel(excelPath,sheetName)
@ddt.ddtclassTestDemo(unittest.TestCase):defsetUp(self):
self.driver= webdriver.Ie(executable_path = "D:\\IEDriverServer")
@ddt.data(*excel.getDatasFromSheet())deftest_dataDrivenByExcel(self,data):
testdata,expectdata=tuple(data)
url= "http://www.baidu.com"self.driver.get(url)
self.driver.maximize_window()#设置隐式等待时间为10秒
self.driver.implicitly_wait(10)try:#找到搜索框,并输入测试数据
self.driver.find_element_by_id("kw").send_keys(testdata)#找到搜索按钮并单击
self.driver.find_element_by_id("su").click()
time.sleep(3)#断言期望结果是否出现在页面源代码中
self.assertTrue(expectdata inself.driver.page_source)exceptNoSuchElementException,e: