前言
常見的兩種接口依賴處理方式
1、請(qǐng)求體的字段依賴
這種情況多數(shù)是在當(dāng)前測(cè)試的接口,它的前置接口的請(qǐng)求體中的字段要拿來(lái)在當(dāng)前的接口請(qǐng)求體中繼續(xù)使用。
比如修改用戶信息的接口,該接口會(huì)使用到用戶名的字段,該字段是由創(chuàng)建用戶時(shí)的請(qǐng)求體中傳入的,創(chuàng)建用戶的接口請(qǐng)求體我們做了參數(shù)化,讓它動(dòng)態(tài)生成用戶名。
因?yàn)槊看味际亲兓?,則當(dāng)執(zhí)行到修改用戶信息的接口時(shí),如果我們依然使用上個(gè)接口的參數(shù)化,勢(shì)必會(huì)導(dǎo)致兩者的用戶名不一樣,因此會(huì)導(dǎo)致接口執(zhí)行失敗,所以我們要對(duì)這種類型的接口進(jìn)行接口依賴處理
我們直接在測(cè)試類的代碼中處理接口依賴:
if case["check_info"] == 'user_info':
user_name = json.loads(new_data)['name']
case_logger.info("{:-^50s}".format(f"user_name:{user_name}"))
setattr(do_re, 'user_name', user_name)
2、響應(yīng)體的字段依賴
將響應(yīng)體的字段拿來(lái)用在下一個(gè)接口的這種方式,在接口依賴中依然很常見,往往上一個(gè)接口為get類型的查詢接口,我們從該接口的響應(yīng)體中取對(duì)應(yīng)的字段拿到下一個(gè)接口的請(qǐng)求體中使用。
我們直接在測(cè)試類的代碼中處理接口依賴:
if case["check_info"] == 'get_op_svc_servicestage_domainId':
op_svc_servicestage_domainId = res.json()['user']['domain']['id']
case_logger.info("{:-^50s}".format(f"op_svc_servicestage_domainId:{op_svc_servicestage_domainId}"))
setattr(do_re, 'op_svc_servicestage_domainId', op_svc_servicestage_domainId)
處理需要上傳文件的類型接口
1、接口分析
這里直接在前端進(jìn)行上傳,通過Chrome瀏覽器的F12開發(fā)工具進(jìn)行抓包,可以看到上傳文件接口的請(qǐng)求與相應(yīng)信息,因?yàn)槭枪镜捻?xiàng)目接口,會(huì)做一些馬賽克處理:
再看看請(qǐng)求參數(shù):
我們可以從請(qǐng)求中看到,請(qǐng)求方式為multipart/form-data表單格式,并且注意到,雖然上傳了文件,但是請(qǐng)求參數(shù)中并沒有展示文件路徑和文件名,而且fileList值為“binary”,那么可以知道上傳的為文件的字節(jié)內(nèi)容
2、postman示例
以postman示例,body選擇form-data選項(xiàng),key填入fileList[]并選擇格式為file,在value中選擇一個(gè)本地文件進(jìn)行上傳,然后發(fā)起請(qǐng)求:
3、requests示例
剛剛我們借助工具實(shí)現(xiàn)了上傳文件的請(qǐng)求,postman中可以將我們的請(qǐng)求轉(zhuǎn)化為python代碼格式。
具體步驟如下:
先使用postman構(gòu)建好參數(shù)并調(diào)試成功;
點(diǎn)擊Save按鈕下方的Code;
選擇語(yǔ)言為Python - Requests后復(fù)制代碼
將復(fù)制后的代碼粘貼到Pycharm或者VS code的開發(fā)工具中運(yùn)行即可
import os
import requests
from Commons.constants import UPLOAD_DIR
url = "https://接口地址/1.0/product/style-gallery"
payload = {}
files = [
('fileList[]', open(os.path.join(UPLOAD_DIR, 'stylegallery.png'), 'rb'))
]
headers = {}
response = requests.request("POST", url, headers=headers, data=payload, files=files)
print(response.text.encode('utf8'))
至此就完成了文件上傳接口的處理,后續(xù)進(jìn)行測(cè)試或者接口自動(dòng)化在此基礎(chǔ)上進(jìn)行二次開發(fā)即可
4、解決方法二
如果上面的方式并不能解決問題,那么再采用第二種方法,基本就不會(huì)有問題。
我們先來(lái)看看上傳文件的請(qǐng)求內(nèi)容:
接下來(lái),給requests庫(kù)的請(qǐng)求參數(shù)files的值套用以下模板:
files = {
'${name}': ('${filename}', open( '${filepath}', 'rb'), '${Content-Type}')
}
${name}:即name的值"fileList[0]"
${filename}:即filename的值"a.jpg"
${filepath}:filename的文件路徑
${Content-Type}:即Content-Type的值"image/jpeg"
將模板對(duì)應(yīng)的變量替換為實(shí)際值,得到:
files = {
'fileList[0]': ('a.jpg', open(os.path.join(UPLOAD_DIR, 'a.jpg'), 'rb'), 'image/jpeg')
}
注意:要確認(rèn)文件路徑是否正確,我這里使用了相對(duì)路徑,然后將files傳遞給requests的對(duì)應(yīng)方法上即可。
下面是我整理的2023年最全的軟件測(cè)試工程師學(xué)習(xí)知識(shí)架構(gòu)體系圖 |
一、Python編程入門到精通
二、接口自動(dòng)化項(xiàng)目實(shí)戰(zhàn)
三、Web自動(dòng)化項(xiàng)目實(shí)戰(zhàn)
四、App自動(dòng)化項(xiàng)目實(shí)戰(zhàn)
五、一線大廠簡(jiǎn)歷
六、測(cè)試開發(fā)DevOps體系
七、常用自動(dòng)化測(cè)試工具
八、JMeter性能測(cè)試
九、總結(jié)(尾部小驚喜)
不經(jīng)歷風(fēng)雨,怎能見彩虹;不經(jīng)歷磨煉,怎能成巨匠。堅(jiān)持夢(mèng)想,追求卓越,奮斗的腳步永不停歇。在每個(gè)黎明前,都有輝煌等待。
奮斗如同磨刀石,磨礪出鋒芒;努力如同陽(yáng)光,照亮前行。不畏挑戰(zhàn),追求卓越,只有堅(jiān)持不懈地執(zhí)著奮斗,方能超越自我,綻放人生的輝煌,讓夢(mèng)想在奮斗的征途中閃耀不息!文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-651970.html
奮斗的旅途上,不要畏懼失敗,因?yàn)槊恳淮蔚苟际钦酒饋?lái)更堅(jiān)強(qiáng)的機(jī)會(huì);不要追求完美,因?yàn)槌砷L(zhǎng)正是在一次次的嘗試中積累。只要心懷勇氣與堅(jiān)持,堅(jiān)定地邁向夢(mèng)想。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-651970.html
到了這里,關(guān)于吐血整理,接口自動(dòng)化測(cè)試-接口依賴/上傳接口處理(項(xiàng)目實(shí)例)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!