接口自動(dòng)化-01

一、讀取Excel表格尊浓,以字典表方式存入all_case_datas列表中
from openpyxl import load_workbook

class DoExcel:

    def Excel(a):
        wb = load_workbook('/Users/xiaolongxia/PycharmProjects/api_test/text.xlsx')
        sheet = wb.get_sheet_by_name(a)
        all_case_datas=[]
        for i in  range(2,sheet.max_row+1):
            case_data={}
            case_data["url"]=sheet.cell(row=i,column=1).value
            case_data["request_data"]=sheet.cell(row=i,column=2).value
            case_data["method"]=sheet.cell(row=i,column=3).value
            case_data["expected_data"]=sheet.cell(row=i,column=4).value
            if sheet.cell(row=i,column=5).value is not None:
                case_data['related_exp']=sheet.cell(row=i,column=5).value
            all_case_datas.append(case_data)
        return all_case_datas


print(DoExcel.Excel('api_test'))
image.png

運(yùn)行結(jié)果


image.png
二、創(chuàng)建http請(qǐng)求類(lèi)
import requests

class Req():

    def muRequest(url, request_data, method):
        #判斷數(shù)據(jù)是否為空如果不為空則轉(zhuǎn)換為字典
        if request_data is not None:
            request_data = eval(request_data)
        if method == 'get':
            res = requests.get(url, request_data,verify=False)
            print(res.text)
        if method == 'post':
            res = requests.post(url, request_data,verify=False)
            print(res.text)
        else:
            print("填寫(xiě)的不對(duì)吧!~~")
        return res

三蝇恶、調(diào)用


import DoExcel
import my_Request
import unittest
import ddt
import re

doexcel=DoExcel.DoExcel.Excel('api_test')
global_vars={}
print(doexcel)

@ddt.ddt
class Test_Api(unittest.TestCase):

    @ddt.data(*doexcel)
    def test_api(self,case_data):
        global global_vars  #設(shè)置全局變量

        print("1111111")
        #動(dòng)態(tài)替換,判斷請(qǐng)求參數(shù)中是否有需要替換全局變量的值
        if len(global_vars) > 0 and case_data['request_data'] is not None:
            for key,value in global_vars.items():
                if case_data['request_data'].find(key)!=-1:
                    case_data['request_data']=case_data['request_data'].replace(key,value)
#Python 字典(Dictionary) items() 函數(shù)以列表返回可遍歷的(鍵, 值) 元組數(shù)組惶桐。
#Python find() 方法檢測(cè)字符串中是否包含子字符串 str 撮弧,如果指定 beg(開(kāi)始) 和 end(結(jié)束) 范圍,則檢查是否包含在指定范圍內(nèi)姚糊,如果包含子字符串返回開(kāi)始的索引值贿衍,否則返回-1。
#Python replace() 方法把字符串中的 old(舊字符串) 替換成 new(新字符串)救恨,如果指定第三個(gè)參數(shù)max贸辈,則替換不超過(guò) max 次。

        print(case_data['expected_data'])
        res=my_Request.Req.muRequest(case_data['url'],case_data['request_data'],case_data['method'])
        print("肠槽。擎淤。奢啥。。嘴拢。桩盲。。席吴。赌结。。孝冒。")
        print(case_data['request_data'])
        print(res.text)
        print(type(case_data['expected_data']))

        #正則匹配響應(yīng)結(jié)果的值姑曙,放置在全局變量中
        if 'related_exp' in case_data.keys():
            temp=case_data['related_exp'].split("=")
            tem=re.findall(temp[1],res.text)
            print("提取的p為:"+str(tem))
            print(temp[0])
            print(tem[0])
            global_vars[temp[0]]=tem[0]
            print(global_vars)
#Python split() 通過(guò)指定分隔符對(duì)字符串進(jìn)行切片,如果參數(shù) num 有指定值迈倍,則僅分隔 num 個(gè)子字符串
#正則 re.findall  的簡(jiǎn)單用法(返回string中所有與pattern相匹配的全部字串伤靠,返回形式為數(shù)組),findall(pattern, string, flags=0)




        #響應(yīng)斷言
        try:
            self.assertIn(case_data['expected_data'],res.text)
            print("匹配成功")
        except AssertionError:
            print("匹配失敗")
            raise  AssertionError
#        res=my_Request.Req(case_data["url"],case_data["method"],case_data["request_data"])
#        print(res.text)

#__name__ 只當(dāng)前py文件調(diào)用方式的方法
if __name__ == '__main__':
    unittest.main()

結(jié)果:


image.png

未完待續(xù)

  • 備注:使用 sheet=wb.get_sheet_by_name('frequency')方法會(huì)有錯(cuò)誤警告所以將該方法修改為 sheet=wb["frequency"]
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市啼染,隨后出現(xiàn)的幾起案子宴合,更是在濱河造成了極大的恐慌,老刑警劉巖迹鹅,帶你破解...
    沈念sama閱讀 219,427評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件卦洽,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡斜棚,警方通過(guò)查閱死者的電腦和手機(jī)阀蒂,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)弟蚀,“玉大人蚤霞,你說(shuō)我怎么就攤上這事∫宥ぃ” “怎么了昧绣?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,747評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)捶闸。 經(jīng)常有香客問(wèn)我夜畴,道長(zhǎng),這世上最難降的妖魔是什么删壮? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,939評(píng)論 1 295
  • 正文 為了忘掉前任贪绘,我火速辦了婚禮,結(jié)果婚禮上央碟,老公的妹妹穿的比我還像新娘税灌。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,955評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布垄琐。 她就那樣靜靜地躺著,像睡著了一般经柴。 火紅的嫁衣襯著肌膚如雪狸窘。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,737評(píng)論 1 305
  • 那天坯认,我揣著相機(jī)與錄音翻擒,去河邊找鬼。 笑死牛哺,一個(gè)胖子當(dāng)著我的面吹牛陋气,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播引润,決...
    沈念sama閱讀 40,448評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼巩趁,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了淳附?” 一聲冷哼從身側(cè)響起议慰,我...
    開(kāi)封第一講書(shū)人閱讀 39,352評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎奴曙,沒(méi)想到半個(gè)月后别凹,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,834評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡洽糟,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,992評(píng)論 3 338
  • 正文 我和宋清朗相戀三年炉菲,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片坤溃。...
    茶點(diǎn)故事閱讀 40,133評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡拍霜,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出薪介,到底是詐尸還是另有隱情沉御,我是刑警寧澤,帶...
    沈念sama閱讀 35,815評(píng)論 5 346
  • 正文 年R本政府宣布昭灵,位于F島的核電站吠裆,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏烂完。R本人自食惡果不足惜试疙,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,477評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望抠蚣。 院中可真熱鬧祝旷,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,022評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至吻谋,卻和暖如春忠蝗,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背漓拾。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,147評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工芽偏, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留航棱,地道東北人绿渣。 一個(gè)月前我還...
    沈念sama閱讀 48,398評(píng)論 3 373
  • 正文 我出身青樓拳喻,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親低千。 傳聞我的和親對(duì)象是個(gè)殘疾皇子配阵,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,077評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 官網(wǎng) 中文版本 好的網(wǎng)站 Content-type: text/htmlBASH Section: User ...
    不排版閱讀 4,389評(píng)論 0 5
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)示血,斷路器闸餐,智...
    卡卡羅2017閱讀 134,672評(píng)論 18 139
  • Spark SQL, DataFrames and Datasets Guide Overview SQL Dat...
    草里有只羊閱讀 18,326評(píng)論 0 85
  • 1.越強(qiáng)大的事物,越是難以用語(yǔ)言描述矾芙。 比如說(shuō)終極智慧舍沙,比如說(shuō)真理。威爾.杜蘭特在《哲學(xué)的故事》序言中說(shuō)剔宪,也許人們...
    小偉_f152閱讀 569評(píng)論 4 2
  • 要說(shuō)國(guó)內(nèi)最著名的影視城拂铡,鎮(zhèn)北堡可以算一個(gè)〈腥蓿《牧馬人》感帅、《紅高粱》、《大話西游》地淀、《刺陵》失球、《錦衣衛(wèi)》等近百部影片都...
    攜程攻略社區(qū)閱讀 522評(píng)論 0 0