做了个数据驱动ddt和表格结合使用的练习,如下:
1、表格的后缀为.xls,表格中数值的类型必须是文本型,否则打印出来的数值后面多了.0,即1.0
2、读取表格代码:
1 import xlrd 2 3 def readxls(): 4 xl=xlrd.open_workbook('testdata.xls') #打开Excel表格 5 sheet1 = xl.sheet_by_name('Sheet1') #指定表1 6 listdata= [] #定义空列表,用来存放读取出来的每行数据 7 for i in range(1, 5): #循环1~5(不包含5),即循环4次 8 j = sheet1.row_values(i, 0, 2) #读取第i行的第0~2列(不含第2列) 9 listdata.append(j) #读一行追加一行存入listdata中10 # print(listdata)11 return listdata #返回列表
3、将从表格读出来的数据与ddt结合使用,代码:
方法一:
1 from ddt import ddt,data,unpack 2 import unittest 3 from readexcel import readxls 4 5 datatest=readxls() 6 @ddt 7 class BiJiao(unittest.TestCase): 8 9 @data(*datatest) #分离数据10 def test_bijiao(self,data):11 a,b=data #将列表的值赋值给a,b12 print('a取值={0},b取值={1},两者相加={2}'.format(int(a),int(b),int(a)+int(b)))13 14 if __name__=='__main__':15 unittest.main()
方法二:
1 from ddt import ddt,data,unpack 2 import unittest 3 from readexcel import readxls 4 5 datatest=readxls() 6 @ddt 7 class BiJiao(unittest.TestCase): 8 @data(*datatest) #分离数据 9 @unpack10 def test_bijiao(self,a,b):11 print('a取值={0},b取值={1},两者相加={2}'.format(int(a),int(b),int(a)+int(b)))12 13 if __name__=='__main__':14 unittest.main()
方法三:
1 from ddt import ddt,data,unpack 2 import unittest 3 from readexcel import readxls 4 5 datatest=readxls() 6 @ddt 7 class BiJiao(unittest.TestCase): 8 @data(*datatest) #分离数据 9 @unpack10 def test_bijiao(self,*data):11 a,b=data #将列表的值赋值给a,b12 print('a取值={0},b取值={1},两者相加={2}'.format(int(a),int(b),int(a)+int(b)))13 14 if __name__=='__main__':15 unittest.main()
4、打印结果