网站建设价格标签,哪些网站推广不收费,滁州网站seo,wap手机网站模版#x1f345; 点击文末小卡片#xff0c;免费获取软件测试全套资料#xff0c;资料在手#xff0c;涨薪更快数据驱动将测试数据和测试行为完全分离#xff0c;实施数据驱动测试步骤如下#xff1a;A、编写测试脚本#xff0c;脚本需要支持从程序对象、文件或者数据库读入…点击文末小卡片免费获取软件测试全套资料资料在手涨薪更快数据驱动将测试数据和测试行为完全分离实施数据驱动测试步骤如下A、编写测试脚本脚本需要支持从程序对象、文件或者数据库读入测试数据B、将测试脚本使用的测试数据存入程序对象、文件或者数据库等外部介质中C、运行脚本过程中循环调用存储在外部介质中的测试数据D、验证所有的测试结果是否符合预期结果1、使用unittest和ddt进行数据驱动#-*- coding: UTF-8 -*- from selenium import webdriver import unittest import time import logging import traceback import ddt from selenium.common.exceptions import NoSuchElementException # 初始化日志对象 logging.basicConfig( # 日志级别 level logging.INFO, # 日志格式 # 时间、代码所在文件名、代码行号、日志级别名字、日志信息 format%(asctime)s %(filename)s[line: %(lineno)d] %(levelname)s %(message)s, # 打印日志时间 datafomat%a, %d %b %Y %H: %M: %S, # 日志文件存放的目录及日志文件名 filenamed:/DataDriverTesting/report.log, # 打开日志文件的方式 filemodew ) ddt.ddt class TestDemo(unittest.TestCase): def setUp(self): self.driver webdriver.Chrome() ddt.data( [u神奇动物在哪里, u叶], [u疯狂动物成, u古德温], [u大话西游之月光宝盒, u周星驰] ) ddt.unpack def test_data(self,testdata, expectdata): self.driver.get(http://www.baidu.com) self.driver.implicitly_wait(2) 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 in self.driver.page_source) except NoSuchElementException,e: logging.error(u查找的页面元素不存在异常堆站信息str(traceback.print_exc())) except Exception, e: logging.error(u未知错误错误信息如下str(traceback.print_exc())) else: logging.info(u搜索%s,期望%s,通过%(testdata, expectdata)) def tearDown(self): self.driver.quit() if __name__ __main__: unittest.main()备注在unittest中结合ddt实现数据驱动首先是在头部导入ddt模块其次在测试类前声明使用ddt然后在测试方法前使用ddt.data()添加该测试方法需要的测试数据该函数接收一个可迭代的类型以此来判断需要执行的次数多组测试数据间以逗号隔开如果每组数据存在多个需要将每组数据存于列表中最后使用unpack 进行修饰对测试数据解包传参2、使用JSon存储数据实现数据驱动测试数据存储test_data_list.json中[ 邓肯||蒂姆, 乔丹||迈克尔, 库里||斯蒂芬, 杜兰特||凯文, 詹姆斯||勒布朗 ]数据和脚本文件要在同一级目录中#-*- coding: UTF-8 -*- from selenium import webdriver import HTMLTestRunner import unittest import time import logging import traceback import ddt from selenium.common.exceptions import NoSuchElementException # 初始化日志对象 logging.basicConfig( # 日志级别 level logging.INFO, # 日志格式 # 时间、代码所在文件名、代码行号、日志级别名字、日志信息 format%(asctime)s %(filename)s[line: %(lineno)d] %(levelname)s %(message)s, # 打印日志时间 datafomat%a, %d %b %Y %H: %M: %S, # 日志文件存放的目录及日志文件名 filenamed:/DataDriverTesting/report.log, # 打开日志文件的方式 filemodew ) ddt.ddt class TestDemo(unittest.TestCase): def setUp(self): self.driver webdriver.Chrome() ddt.file_data(test_data_list) def test_data(self, value): self.driver.get(http://www.baidu.com) self.driver.implicitly_wait(2) testdata, expectdata tuple(value.strip().split(||)) self.driver.implicitly_wait(2) 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 in self.driver.page_source) except NoSuchElementException,e: logging.error(u查找的页面元素不存在异常堆站信息str(traceback.print_exc())) except Exception, e: logging.error(u未知错误错误信息如下str(traceback.print_exc())) else: logging.info(u搜索%s,期望%s,通过%(testdata, expectdata)) def tearDown(self): self.driver.quit() if __name__ __main__: suite1 unittest.TestLoader().loadTestsFromTestCase(TestDemo) suite unittest.TestSuite(suite1) filename d:\\test.html fp file(filename,wb) runner HTMLTestRunner.HTMLTestRunner(streamfp, titleReport_title, descriptionReport_description) runner.run(suite)3、使用Excel进行数据驱动测试安装Python解析Excel 2007及以上版本的模块pip install openpyxl2.3.3在Pycharm上新建一个工程创建文件测试数据.xlsx文件sheet名为搜索数据表序号搜索词期望结果1邓肯蒂姆2乔丹迈克尔3库里斯蒂芬创建ExcelUtil.py文件# -*- coding: UTF-8 -*- from openpyxl import load_workbook class ParseExcel(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_row def getDatasFromSheet(self): # 用于存放从工作表中读取出来的数据 dataList [] # 因为工作表中的第一行是标题行所以需要去掉 for line in self.sheet.rows[1:]: # 遍历工作表中数据区域的每一行并将每行中每个单元格的数据去除存于列表tmpList中 # 然后再将存放一行数据的列表添加到最终数据列表dataList中 tmpList [] tmpList.append(line[1].value) tmpList.append(line[2].value) dataList.append(tmpList) return dataList if __name__ __main__: excelPath u测试数据.xlsx sheetName u搜索数据表 pe ParseExcel(excelPath, sheetName) for i in pe.getDatasFromSheet(): print i[0],i[1]创建DataDriven.py文件# -*- coding: UTF-8 -*- from selenium import webdriver import unittest import time import logging import traceback import ddt from ExcelUtil import ParseExcel from selenium.common.exceptions import NoSuchElementException # 初始化日志对象 logging.basicConfig( # 日志级别 level logging.INFO, # 日志格式 # 时间、代码所在文件名、代码行号、日志级别名字、日志信息 format%(asctime)s %(filename)s[line: %(lineno)d] %(levelname)s %(message)s, # 打印日志时间 datafomat%a, %d %b %Y %H: %M: %S, # 日志文件存放的目录及日志文件名 filenamed:/DataDriverTesting/report.log, # 打开日志文件的方式 filemodew ) excelPath u测试数据.xlsx sheetName u搜索数据表 excel ParseExcel(excelPath, sheetName) ddt.ddt class TestDemo(unittest.TestCase): def setUp(self): self.driver webdriver.Chrome() ddt.data(*excel.getDatasFromSheet()) def test_data(self, data): testdata,expectdata tuple(data) self.driver.get(http://www.baidu.com) print testdata,expectdata self.driver.implicitly_wait(2) 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 in self.driver.page_source) except NoSuchElementException,e: logging.error(u查找的页面元素不存在异常堆站信息str(traceback.print_exc())) except Exception, e: logging.error(u未知错误错误信息如下str(traceback.print_exc())) else: logging.info(u搜索%s,期望%s,通过%(testdata, expectdata)) def tearDown(self): self.driver.quit() if __name__ __main__: unittest.main()备注ddt.data从excel.getDatasFormSheet()方法中接收一个可迭代的数组对象以此来判断需要执行的次数。如果ddt.data()中传的是一个方法方法前需要加型号(*)修饰4、使用xml进行数据驱动测试在pycharm中创建一个项目创建TestData.xml文件用于存放测试数据具体内容如下?xml version1.0 encodingutf-8 ? bookList typetechnology book nameSelenium WebDriver实战宝典/name author吴晓华/author /book book nameHTTP权威指南/name authorHTTP/author /book book name探索式软件测试/name author惠特克/author /book /bookList创建XmlUtil.py文件用于解析XML文件获取测试数据# -*- coding: UTF-8 -*- from xml.etree import ElementTree class ParseXML(object): def __init__(self,xmlPath): self.xmlPath xmlPath def getRoot(self): tree ElementTree.parse(self.xmlPath) return tree.getroot() def findNodeName(self,parentNode,nodeName): nodes parentNode.findall(nodeName) return nodes def getNodeOfChildText(self, node): # childrenTextDict {i.tag: i.text for i in list(node.iter())[1:]} childrenTextDict {} for i in list(node.iter())[1:]: childrenTextDict[i.tag] i.text return childrenTextDict def getDataFromXml(self): root self.getRoot() books self.findNodeName(root, book) dataList [] for book in books: childrenText self.getNodeOfChildText(book) dataList.append(childrenText) return dataList if __name____main__: xml ParseXML(rTestData) datas xml.getDataFromXml() for i in datas: print i[name],i[author]创建DataDrivenByXML.py文件用于编写数据驱动测试脚本# -*- coding: UTF-8 -*- from selenium import webdriver import unittest import time import os import logging import traceback import ddt from XmlUtil import ParseXML from selenium.common.exceptions import NoSuchElementException # 初始化日志对象 logging.basicConfig( # 日志级别 level logging.INFO, # 日志格式 # 时间、代码所在文件名、代码行号、日志级别名字、日志信息 format%(asctime)s %(filename)s[line: %(lineno)d] %(levelname)s %(message)s, # 打印日志时间 datafomat%a, %d %b %Y %H: %M: %S, # 日志文件存放的目录及日志文件名 filenamed:/DataDriverTesting/report.log, # 打开日志文件的方式 filemodew ) # 获取当前文件所在父目录的绝对路径 currentPath os.path.dirname(os.path.abspath(__file__)) # 获取数据文件的绝对路径 dataFilePath os.path.join(currentPath, TestData.xml) print dataFilePath # 创建ParseXML实例对象 xml ParseXML(TestData) ddt.ddt class TestDemo(unittest.TestCase): def setUp(self): self.driver webdriver.Chrome() ddt.data(* xml.getDataFromXml()) def test_data(self, data): testdata, expectdata data[name], data[author] self.driver.get(http://www.baidu.com) print testdata,expectdata self.driver.implicitly_wait(2) 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 in self.driver.page_source) except NoSuchElementException,e: logging.error(u查找的页面元素不存在异常堆站信息str(traceback.print_exc())) except Exception, e: logging.error(u未知错误错误信息如下str(traceback.print_exc())) else: logging.info(u搜索%s,期望%s,通过%(testdata, expectdata)) def tearDown(self): self.driver.quit() if __name__ __main__: unittest.main()最后感谢每一个认真阅读我文章的人礼尚往来总是要有的虽然不是什么很值钱的东西如果你用得到的话可以直接拿走这些资料对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库这个仓库也陪伴我走过了最艰难的路程希望也能帮助到你凡事要趁早特别是技术行业一定要提升技术功底。