Python unittest excel数据驱动
安装xlrd
下载地址:https://pypi.python.org/pypi/xlrd
安装ddt
下载地址:https://pypi.python.org/pypi/ddt/1.1.0
class ExcelUtil(object):
def __init__(self, excelPath, sheetName):
try:
self.data = xlrd.open_workbook(excelPath)
except Exception as e:
print(str(e))
self.table = self.data.sheet_by_name(sheetName)
# get titles
self.row = self.table.row_values(0)
# get rows number
self.rowNum = self.table.nrows
# get columns number
self.colNum = self.table.ncols
# the current column
self.curRowNo = 1
def next(self):
r = []
while self.hasNext():
s = {}
col = self.table.row_values(self.curRowNo)
i = self.colNum
for x in range(i):
s[self.row[x]] = col[x]
r.append(s)
self.curRowNo += 1
return r
def hasNext(self):
if self.rowNum == 0 or self.rowNum <= self.curRowNo:
return False
else:
return True
在unittest框架中使用ddt进行迭代,@ddt.data接收一个可迭代的类型,来判断执行的次数,excel.next()返回的是一个数组
import unittest import ddt import ExcelUtil excel = ExcelUtil("excelPath", 'Sheet1') @ddt.ddt class DataTest(unittest.TestCase): @classmethod def setUpClass(cls): print('start') @classmethod def tearDownClass(cls): print('stop') @ddt.data(*excel.next()) def testLogin(self, data): print(data['username'], data['password'])
if __name__ == "__main__":
suite = unittest.TestLoader().loadTestsFromTestCase(DataTest)
unittest.TextTestRunner(verbosity=2).run(suite)
excel表格如下:
最后的输出结果为:
admin 123456.0
hjh jpmark961203