前面介紹了幾種參數化內容,有ddt,paramunittest,ddt+yaml等例子,今天安靜在來介紹一種方法ddt+Excel的方法進行完成數據參數化
讀取Excel
安靜以前寫了一篇通過python讀取excel的文章,里面簡單的介紹了如何讀取excel和寫入excel內容。文章地址:python讀寫Excel方法(xlwt和xlrd)
穩固而執行,可以為師也。一起溫習一遍。
這里安靜還是那接口來寫了,先寫個接口需要的參數內容
1、安裝xlrd
2、完成表格實例化
3、循環讀取表格內容(這里安靜把表格的內容分別放到一個列表中)方便后續通過ddt進行讀取
import xlrd def get_data(file_name): aa = [] book = xlrd.open_workbook(file_name) sheet = book.sheet_by_index(0) for i in range(1, sheet.nrows): aa.append(list(sheet.row_values(i, 0, sheet.ncols))) return aa result = get_data('123.xlsx') print(result)
打印結果:
[['上海', '331eab8f3481f37868378fcdc76cb7cd', '上海'], ['北京', '331eab8f3481f37868378fcdc76cb7cd', '北京'], ['廣州', '331eab8f3481f37868378fcdc76cb7c', '錯誤的請求KEY']]
Ddt+Excel
上面的excel中的數據已經得到了,我們需要把數據和ddt結合在一起,這里安靜拿前面的接口進行調試
1、封裝接口內容
2、導入unittests模塊
3、通過ddt讀取excel結果
import ddt import requests import unittests @ddt.ddt class Test(unittest.TestCase): def select(self,city,key): url = 'http://apis.juhe.cn/simpleWeather/query' data = { "city":city, "key":key } r = requests.post(url,data=data) return r @ddt.data(*result) @ddt.unpack def test_01(self,city,key,cake): result = self.select(city,key) print(result.text) self.assertIn(cake,result.text) if __name__ == '__main__': unittest.main(verbosity=2)
打印結果:
test_01_1___上海____331eab8f3481f37868378fcdc76cb7cd____上海__ (__main__.Test) ... ok {"reason":"查詢成功!","result":{"city":"上海","realtime":{"temperature":"17","humidity":"49","info":"晴","wid":"00","direct":"東北風","power":"1級","aqi":"30"},"future":[{"date":"2020-11-11","temperature":"13\/19℃","weather":"晴","wid":{"day":"00","night":"00"},"direct":"東風轉東北風"},{"date":"2020-11-12","temperature":"14\/21℃","weather":"多雲轉晴","wid":{"day":"01","night":"00"},"direct":"東風轉東北風"},{"date":"2020-11-13","temperature":"14\/20℃","weather":"晴轉多雲","wid":{"day":"00","night":"01"},"direct":"東北風"},{"date":"2020-11-14","temperature":"15\/20℃","weather":"多雲","wid":{"day":"01","night":"01"},"direct":"東北風"},{"date":"2020-11-15","temperature":"17\/21℃","weather":"陰轉小雨","wid":{"day":"02","night":"07"},"direct":"東風"}]},"error_code":0} test_01_2___北京____331eab8f3481f37868378fcdc76cb7cd____北京__ (__main__.Test) ... ok
{"reason":"查詢成功!","result":{"city":"北京","realtime":{"temperature":"14","humidity":"42","info":"霾","wid":"53","direct":"西南風","power":"1級","aqi":"186"},"future":[{"date":"2020-11-11","temperature":"4\/16℃","weather":"晴轉多雲","wid":{"day":"00","night":"01"},"direct":"南風轉北風"},{"date":"2020-11-12","temperature":"3\/19℃","weather":"晴","wid":{"day":"00","night":"00"},"direct":"北風"},{"date":"2020-11-13","temperature":"3\/15℃","weather":"晴轉多雲","wid":{"day":"00","night":"01"},"direct":"東南風轉南風"},{"date":"2020-11-14","temperature":"5\/14℃","weather":"多雲","wid":{"day":"01","night":"01"},"direct":"南風轉北風"},{"date":"2020-11-15","temperature":"6\/15℃","weather":"多雲轉小雨","wid":{"day":"01","night":"07"},"direct":"北風轉東風"}]},"error_code":0} test_01_3___廣州____331eab8f3481f37868378fcdc76cb7c____錯誤的請求KEY__ (__main__.Test) ... ok {"resultcode":"101","reason":"錯誤的請求KEY","result":null,"error_code":10001} ---------------------------------------------------------------------- Ran 3 tests in 0.414s OK
完整代碼
import xlrd import unittest import ddt import requests def get_data(file_name): aa = [] book = xlrd.open_workbook(file_name) sheet = book.sheet_by_index(0) for i in range(1, sheet.nrows): aa.append(list(sheet.row_values(i, 0, sheet.ncols))) return aa result = get_data('123.xlsx') @ddt.ddt class Test(unittest.TestCase): # 封裝接口 def select(self,city,key): url = 'http://apis.juhe.cn/simpleWeather/query' data = { "city":city, "key":key } r = requests.post(url,data=data) return r @ddt.data(*result) @ddt.unpack # 進行參數化 def test_01(self,city,key,cake): result = self.select(city,key) print(result.text) self.assertIn(cake,result.text) if __name__ == '__main__': # 通過verbosity=2 查看詳細內容 unittest.main(verbosity=2)
本篇主要用到了python讀取Excel內容以及ddt的使用方法,學習了這個我們也可以舉一反三,通過讀取數據庫內容,然后在通過ddt的形式進行參數化。
如果安靜寫的對您有幫助,點個關注,持續更新~~有什么不懂的或者寫錯的地方可以在下方進行評論留言,安靜看到后第一時間進行回復。