unittest---ddt+Excel完成參數化


  前面介紹了幾種參數化內容,有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的形式進行參數化。

 

如果安靜寫的對您有幫助,點個關注,持續更新~~有什么不懂的或者寫錯的地方可以在下方進行評論留言,安靜看到后第一時間進行回復。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM