為了便於維護,python接口自動化測試用例可以利用xlrd模塊讀取excal表格進行數據分離。我們可以利用xlrd模塊的row_values()和cell_value()兩種方法讀取Excal表格。
一、首先,寫一個運行測試用例的Test_Main類:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import requests
import unittest import json
class TestDemo(unittest.TestCase):
def setUp(self):
pass
def test_Demo1(self):
xmlhead = xxxxxx
xmlbody = xxxxxx
data = {'xmlhead' : xmlhead, 'xmlbody' : xmlbody} #xmlhead、xmlbody為xml格式的報文頭、報文體
url = 'http://xxxxxx'
result = requests.post(url,data=data)
try:
self.assertEqual(result.status_code, 200)
print ("用例測試通過")
except Exception as e:
print e
print "用例測試不通過" #之前寫的是格式為print (e, '用例測試不通過'),打印出來的語句非utf-8格式,因此在此寫了兩個print
def tearDown(self):
pass
if __name__ == '__main__':
unittest.run()
代碼運行正常
二、開始寫讀取excal的公共方法,這里運用row_values()方法批量讀取單元格的值。如下創建python文件read_excal:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import xlrd
class ReadXml(object):
def __init__(self,path = ''):
self.url = xlrd.open_workbook(path) #打開文件
def get_Datasheet_by_name(self,sheet):
self.sheet = self.url.sheet_by_name(sheet) #獲取sheet頁的名字
return self.DataList()
def DataList(self):
list = []
for row in range(0, self.sheet.nrows): #nrows()方法為獲取某一sheet頁的行數
resu = self.sheet.row_values(row) #row_values()批量獲取單元格數據
list.append(resu)
return list
三、讀取excal文件公共方法寫完后,運行代碼無問題。再寫一個調用read_excal的python文件base:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import read_excal
def get_data(self,sheet,row,col):
filepath = read_excal.ReadXml('D:\xx\xx\\xx.xlsx') #在具體文件名前面可以加‘\’,但在本地運行時有時加一個'\'保存,所以加了'\\'確保程序正常運行
ResultData = filepath.get_Datasheet_by_name(sheet)
return ResultData
代碼運行正常
四、現在可以對Test_Main類進行微調了,部分代碼如下:
# -*- coding: UTF-8
-*- # -*- coding: cp936 -*-
import requests
import unittest
import base #導入base模塊
class TestDemo(unittest.TestCase):
def setUp(self):
self.xmlhead = base.get_data('xmlhead') #讀取'xmlhead'頁的所有數據
self.xmlbody = base.get_data('xmlbody') #讀取'xmlbody'頁的所有數據
def test_Demo1(self):
xmlhead = self.xmlhead[0][0] #獲取'xmlhead'頁的第1行第1列數據
xmlbody = self.xmlbody[13][1] #獲取'xmlbody'頁的第14行第2列數據
data = {'xmlhead' : xmlhead, 'xmlbody' : xmlbody} #xmlhead、xmlbody為xml格式的報文頭、報文體
..............................
..............................
運行代碼,程序調試成功
至此,批量讀取Excal單元格值的方法就寫到這里。