文章主要是詳細(xì)介紹了python+pytest接口自動(dòng)化技術(shù)主要參數(shù)關(guān)系,主要參數(shù)關(guān)系,又叫插口關(guān)系,即插口之間產(chǎn)生參數(shù)聯(lián)絡(luò)或依靠,大量相關(guān)知識(shí)必須的小伙伴們可可以了解一下
序言
那么今天,小編想跟大伙兒來(lái)講講python+pytest接口自動(dòng)化測(cè)試主要參數(shù)關(guān)系,小編那邊就不多說(shuō)了廢話了,大家可以直接直入主題。
一、什么叫主要參數(shù)關(guān)系?
主要參數(shù)關(guān)系,又叫插口關(guān)系,即插口之間產(chǎn)生參數(shù)聯(lián)絡(luò)或依靠。在做完某一作用服務(wù)時(shí),有時(shí)候必須按序要求好幾個(gè)插口,這時(shí)候在一些插口中間可能存有關(guān)聯(lián)性。例如:B接口某一或一些請(qǐng)求參數(shù)是由啟用A插口獲得的,即必須要先要求A插口,從A接口回到信息中取得所需要的字段值,在要求B插口時(shí)做為請(qǐng)求參數(shù)傳到。
二、有什么情景?
比較常見(jiàn)的情景其一就是:要求登陸插口后掌握到token值,后面別的接口請(qǐng)求的時(shí)候需要將token做為請(qǐng)求參數(shù)傳到。
又比如下單-->支付場(chǎng)景,啟用下單插口形成訂單信息之后回到訂單編號(hào),訂單編號(hào)發(fā)送給支付平臺(tái)開(kāi)展付款。
三、主要參數(shù)關(guān)系情景
以比較常見(jiàn)的網(wǎng)絡(luò)購(gòu)物為例子,相對(duì)應(yīng)的情景及要求我們能大概簡(jiǎn)單化如下所示(可想到淘寶購(gòu)買(mǎi)過(guò)程):
客戶在加入購(gòu)物車(chē)挑選產(chǎn)品點(diǎn)一下【去清算】進(jìn)到下單頁(yè),下單頁(yè)點(diǎn)一下【下單】這時(shí)候首先會(huì)要求下單插口創(chuàng)建訂單
隨后會(huì)用建立訂單去要求獲得付款憑證插口,這一插口會(huì)喚起支付頁(yè)面,其實(shí)就是輸入支付密碼的支付頁(yè)面
鍵入交易密碼之后要求金融服務(wù)的支付平臺(tái)開(kāi)展具體付款,付款得到的結(jié)果會(huì)回到給要求方,告之是不是交易成功
這一環(huán)節(jié)中涉及的插口實(shí)際上都是有關(guān)系的,大家需要對(duì)整個(gè)過(guò)程進(jìn)行測(cè)試那就需要按順序調(diào)用這所有的一切涉及的插口。
但是這里我們只需搞明白主要參數(shù)關(guān)系,那樣下列單插口和獲得付款憑證插口為例子,舉例子就行了,即先要求下單插口形成訂單編號(hào),先拿這一訂單編號(hào)去要求獲得付款憑證插口,才可以喚起支付頁(yè)面然后進(jìn)行付款。
下單接口如下:
接口地址:<服務(wù)器>/trade/order/purchase
請(qǐng)求類型:post
請(qǐng)求參數(shù):
{ "goodsId":10,//商品id "goodsSkuId":33,//sku id "num":2,//購(gòu)買(mǎi)數(shù)量 "tradePromotion":{//選擇的優(yōu)惠項(xiàng) "type":1,//類型<1:優(yōu)惠券> "promotionId":1//優(yōu)惠id } } 返回值data: { "code":0, "msg":"成功", "data":{ "tradeNo":"0020220116204344962706666"//交易訂單號(hào) }, "t":1639658625474 } 獲取支付憑證接口如下: 接口地址:<服務(wù)器>/pay/pre/consum 請(qǐng)求類型:post
請(qǐng)求參數(shù):
{ "orderNo":"0020220116204344962706666",//交易訂單號(hào) "product":"alipayWapClient"//支付渠道<alipayWapClient:支付寶手機(jī)網(wǎng)頁(yè)支付> } { "orderNo":"0020220116204344962706666",//交易訂單號(hào) "product":"alipayWapClient"//支付渠道<alipayWapClient:支付寶手機(jī)網(wǎng)頁(yè)支付> } 返回值data: { "code":0, "msg":"成功", "data":{ "payNo":"123213213219379213", "certificate":"<form name="punchout_form"method="post"action="https://openapi.alipay.com/gateway.do?charset=UTF-8&method=alipay.trade.wap.pay&sign=aTKlfEnYgR7x9xs1Eyjipo0S%2BFtQ6AKu9d%2Brb7iieMThz2Dq7zp4h8QH4lelTKovOloT%2FPiNXR5miwKgOWW3K6pl0TFO5XX5NSZNBmU%2BPd5ogeo0YT0vCqWUM60rqbYLNtZmvyx%2BAR4Z2SOnqs0CYqVIbZAhpn1Bd5HsdcCCYVgsgOdbEE60Cfu3LG3Z%2FQ0GQIdW24uTyr%2BojRc25ipOC9NIYwtba8UjRw18Z3e7sj75qoIg%2FipICH7FCJBJEdlgBGlNxIjKzhYj4OBg93D&return_url=https%3A%2F%2Fblog.csdn.net%2Fa032788aotify_url=http%3A%2F%2F82.157.145.132%3A8089%2Ftest%2Fnotify%2Fgateway&version=1.0&app_id=2021001105644746&sign_type=RSA2×tamp=2021-150&alipay_sdk=alipay-sdk-java-4.9.5.ALL&format=json">n<input type="hidden"name="biz_content"value="{"time_expire":"2022-12-31 22:00:00","out_trade_no":"123213213219379213","total_amount":0.01,"subject":"測(cè)試商品","product_code":"QUICK_WAP_WAY"}">n<input type="submit"value="立即支付"style="display:none">n</form>n<script>document.forms[0].submit();</script>" }, "t":1639659171031 }
在其中orderNo字段名使這倆插口關(guān)系起來(lái)。每次產(chǎn)生的訂單編號(hào)都是一樣的,因此在檢測(cè)這樣的場(chǎng)景時(shí),那就需要使這倆接口主要參數(shù)開(kāi)展關(guān)系,才走通。
四、腳本編寫(xiě)
那在pytest架構(gòu)的功能測(cè)試中,主要參數(shù)關(guān)系能夠如何解決呢?在這里帶來(lái)二種構(gòu)思,如下所示:
依據(jù)需求場(chǎng)景的啟用時(shí)序圖,在測(cè)試用例中按序調(diào)用接口
將依靠的插口編為fixture函數(shù)公式,并用yield回到下一個(gè)插口所需要的主要參數(shù)
1、在用例中按順序調(diào)用
代碼示例如下:
import requests import json import pytest def test_order_pay(): ''' 創(chuàng)建訂單->獲取支付憑證,調(diào)起支付界面 :return: ''' #先調(diào)用下單接口生成訂單 url_order="https://gouwu.com/trade/order/purchase" data_order={ "goodsId":10, "goodsSkuId":33, "num":2, "tradePromotion":{ "type":1, "promotionId":1 }, "tradeDirectionArticle":{ "articleId":1 } } res_order=requests.post(url=url_order,json=data_order).text tradeNo=json.loads(res_order)["tradeNo"] #再請(qǐng)求獲取支付憑證接口 url_pay="https://gouwu.com/pay/pre/consum" data_pay={ "orderNo":tradeNo,#tradeNo通過(guò)下單接口獲取 "product":"alipayWapClient" } res_pay=requests.post(url=url_pay,json=data_pay).text res_pay=json.loads(res_pay) #斷言 assert res_pay["code"]==0 assert res_pay["data"]["payNo"] assert res_pay["data"]["certificate"] if __name__=='__main__': pytest.main()
上面的代碼只是流水式的進(jìn)行調(diào)用,我們還可以先將每個(gè)接口請(qǐng)求封裝成多帶帶的函數(shù),在測(cè)試用例中只需按照順序調(diào)用這些函數(shù)即可,這個(gè)我們會(huì)在后續(xù)的文章中進(jìn)行說(shuō)明。
2、使用Fixture函數(shù)
定義Fixture函數(shù),代碼示例如下:
pytest.fixture() def get_order(): ''' 請(qǐng)求下單接口,創(chuàng)建訂單 :return: ''' url_order="https://gouwu.com/trade/order/purchase" data_order={ "goodsId":10, "goodsSkuId":33, "num":2, "tradePromotion":{ "type":1, "promotionId":1 }, "tradeDirectionArticle":{ "articleId":1 } } res_order=requests.post(url=url_order,json=data_order).text tradeNo=json.loads(res_order)["tradeNo"] yield tradeNo 在測(cè)試函數(shù)中調(diào)用上面定義的fixture函數(shù),代碼示例如下: def test_pay(get_order): ''' 下單->支付場(chǎng)景校驗(yàn) :param get_order:調(diào)用上面的Fixture函數(shù),函數(shù)名get_order即返回的tradeNo :return: ''' url_pay="https://gouwu.com/pay/pre/consum" data_pay={ "orderNo":get_order,#get_order即為上面定義的fixture函數(shù)返回值 "product":"alipayWapClient" } res_pay=requests.post(url=url_pay,json=data_pay).text res_pay=json.loads(res_pay) #斷言 assert res_pay["code"]==0 assert res_pay["data"]["payNo"] assert res_pay["data"]["certificate"]
五、總結(jié)
參數(shù)關(guān)聯(lián)在接口自動(dòng)化測(cè)試中是必然會(huì)遇到的場(chǎng)景,設(shè)計(jì)關(guān)聯(lián)參數(shù)的用例會(huì)直接影響到用例的維護(hù),當(dāng)然這也是在接口自動(dòng)化項(xiàng)目的架構(gòu)設(shè)計(jì)時(shí)就需要考慮的問(wèn)題。
對(duì)于剛?cè)腴T(mén)的同學(xué)而言,我們需要明白的是,什么是參數(shù)關(guān)聯(lián),以及可以怎樣去處理它
綜上所述,這篇文章就給大家介紹到這里了,希望可以給大家?guī)?lái)幫助
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/130273.html
摘要:本套代碼和邏輯是本人的勞動(dòng)成果,如果有轉(zhuǎn)載需要標(biāo)注,非常適合公司做項(xiàng)目的同學(xué)小白也可以學(xué)哦接口自動(dòng)化項(xiàng)目目錄公共方法的封裝如果不用配置文件可以使用這個(gè)方法進(jìn)行封裝但是有一定的缺陷可以不使用字典。這是在正常的命令行解析之前發(fā)生的。 ...
摘要:前端自動(dòng)化測(cè)試百度搜索功能實(shí)戰(zhàn)可以與結(jié)合生成測(cè)試報(bào)告。以網(wǎng)頁(yè)版本的百度為例,百度首頁(yè)呈現(xiàn)的功能新聞網(wǎng)頁(yè)貼吧知道音樂(lè)圖片視頻地圖等,我們以百度網(wǎng)頁(yè)的搜索功能為例,使用結(jié)合自動(dòng)化測(cè)試框架,完成一個(gè)搜索功能的測(cè)試。 ...
摘要:?jiǎn)卧獪y(cè)試框架作為的標(biāo)準(zhǔn)庫(kù),是其他單元測(cè)試框架的基礎(chǔ)??梢院秃团浜鲜褂镁帉?xiě)單元測(cè)試。官網(wǎng)地址單元測(cè)試覆蓋率工具單元測(cè)試中還需要用到代碼覆蓋率工具。代碼覆蓋率統(tǒng)計(jì)工具用來(lái)發(fā)現(xiàn)沒(méi)有被測(cè)試覆蓋的代碼,完善單元測(cè)試的覆蓋率。 在應(yīng)用程序中,單元是具有一個(gè)或多個(gè)輸入和單個(gè)輸出的軟件中最小可測(cè)試部分。單元...
摘要:其中用到編程等,還需要花更多的精力去深入學(xué)習(xí),當(dāng)每項(xiàng)技能都能掌握到一定深度,才能稱為一個(gè)完整的知識(shí)體系。 都有哪些種類的配置文件 pytest.ini:pytes...
本文關(guān)鍵闡述了python+pytest自動(dòng)化技術(shù)測(cè)試函數(shù)測(cè)試類測(cè)試標(biāo)準(zhǔn)的封裝形式,文章內(nèi)容緊扣主題開(kāi)展詳盡的基本介紹,具有很強(qiáng)的實(shí)用價(jià)值,務(wù)必的朋友可以學(xué)習(xí)一下 序言 那么今天,我想跟大家聊聊python+pytest接口自動(dòng)化里將編碼開(kāi)展封裝形式,只有把測(cè)試程序開(kāi)展封裝形式,才會(huì)被測(cè)試框架鑒別實(shí)行?! ±鐔为?dú)插口要求編碼如下所示: importrequests headers=...
閱讀 892·2023-01-14 11:38
閱讀 837·2023-01-14 11:04
閱讀 688·2023-01-14 10:48
閱讀 1892·2023-01-14 10:34
閱讀 895·2023-01-14 10:24
閱讀 753·2023-01-14 10:18
閱讀 482·2023-01-14 10:09
閱讀 522·2023-01-14 10:02