文章主要是詳細介紹了python+pytest接口自動化技術主要參數關系,主要參數關系,又叫插口關系,即插口之間產生參數聯絡或依靠,大量相關知識必須的小伙伴們可可以了解一下
序言
那么今天,小編想跟大伙兒來講講python+pytest接口自動化測試主要參數關系,小編那邊就不多說了廢話了,大家可以直接直入主題。
一、什么叫主要參數關系?
主要參數關系,又叫插口關系,即插口之間產生參數聯絡或依靠。在做完某一作用服務時,有時候必須按序要求好幾個插口,這時候在一些插口中間可能存有關聯性。例如:B接口某一或一些請求參數是由啟用A插口獲得的,即必須要先要求A插口,從A接口回到信息中取得所需要的字段值,在要求B插口時做為請求參數傳到。
二、有什么情景?
比較常見的情景其一就是:要求登陸插口后掌握到token值,后面別的接口請求的時候需要將token做為請求參數傳到。
又比如下單-->支付場景,啟用下單插口形成訂單信息之后回到訂單編號,訂單編號發送給支付平臺開展付款。
三、主要參數關系情景
以比較常見的網絡購物為例子,相對應的情景及要求我們能大概簡單化如下所示(可想到淘寶購買過程):
客戶在加入購物車挑選產品點一下【去清算】進到下單頁,下單頁點一下【下單】這時候首先會要求下單插口創建訂單
隨后會用建立訂單去要求獲得付款憑證插口,這一插口會喚起支付頁面,其實就是輸入支付密碼的支付頁面
鍵入交易密碼之后要求金融服務的支付平臺開展具體付款,付款得到的結果會回到給要求方,告之是不是交易成功
這一環節中涉及的插口實際上都是有關系的,大家需要對整個過程進行測試那就需要按順序調用這所有的一切涉及的插口。
但是這里我們只需搞明白主要參數關系,那樣下列單插口和獲得付款憑證插口為例子,舉例子就行了,即先要求下單插口形成訂單編號,先拿這一訂單編號去要求獲得付款憑證插口,才可以喚起支付頁面然后進行付款。
下單接口如下:
接口地址:<服務器>/trade/order/purchase
請求類型:post
請求參數:
{ "goodsId":10,//商品id "goodsSkuId":33,//sku id "num":2,//購買數量 "tradePromotion":{//選擇的優惠項 "type":1,//類型<1:優惠券> "promotionId":1//優惠id } } 返回值data: { "code":0, "msg":"成功", "data":{ "tradeNo":"0020220116204344962706666"//交易訂單號 }, "t":1639658625474 } 獲取支付憑證接口如下: 接口地址:<服務器>/pay/pre/consum 請求類型:post
請求參數:
{ "orderNo":"0020220116204344962706666",//交易訂單號 "product":"alipayWapClient"//支付渠道<alipayWapClient:支付寶手機網頁支付> } { "orderNo":"0020220116204344962706666",//交易訂單號 "product":"alipayWapClient"//支付渠道<alipayWapClient:支付寶手機網頁支付> } 返回值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":"測試商品","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字段名使這倆插口關系起來。每次產生的訂單編號都是一樣的,因此在檢測這樣的場景時,那就需要使這倆接口主要參數開展關系,才走通。
四、腳本編寫
那在pytest架構的功能測試中,主要參數關系能夠如何解決呢?在這里帶來二種構思,如下所示:
依據需求場景的啟用時序圖,在測試用例中按序調用接口
將依靠的插口編為fixture函數公式,并用yield回到下一個插口所需要的主要參數
1、在用例中按順序調用
代碼示例如下:
import requests import json import pytest def test_order_pay(): ''' 創建訂單->獲取支付憑證,調起支付界面 :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"] #再請求獲取支付憑證接口 url_pay="https://gouwu.com/pay/pre/consum" data_pay={ "orderNo":tradeNo,#tradeNo通過下單接口獲取 "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()
上面的代碼只是流水式的進行調用,我們還可以先將每個接口請求封裝成多帶帶的函數,在測試用例中只需按照順序調用這些函數即可,這個我們會在后續的文章中進行說明。
2、使用Fixture函數
定義Fixture函數,代碼示例如下:
pytest.fixture() def get_order(): ''' 請求下單接口,創建訂單 :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 在測試函數中調用上面定義的fixture函數,代碼示例如下: def test_pay(get_order): ''' 下單->支付場景校驗 :param get_order:調用上面的Fixture函數,函數名get_order即返回的tradeNo :return: ''' url_pay="https://gouwu.com/pay/pre/consum" data_pay={ "orderNo":get_order,#get_order即為上面定義的fixture函數返回值 "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"]
五、總結
參數關聯在接口自動化測試中是必然會遇到的場景,設計關聯參數的用例會直接影響到用例的維護,當然這也是在接口自動化項目的架構設計時就需要考慮的問題。
對于剛入門的同學而言,我們需要明白的是,什么是參數關聯,以及可以怎樣去處理它
綜上所述,這篇文章就給大家介紹到這里了,希望可以給大家帶來幫助
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/130273.html
摘要:本套代碼和邏輯是本人的勞動成果,如果有轉載需要標注,非常適合公司做項目的同學小白也可以學哦接口自動化項目目錄公共方法的封裝如果不用配置文件可以使用這個方法進行封裝但是有一定的缺陷可以不使用字典。這是在正常的命令行解析之前發生的。 ...
摘要:前端自動化測試百度搜索功能實戰可以與結合生成測試報告。以網頁版本的百度為例,百度首頁呈現的功能新聞網頁貼吧知道音樂圖片視頻地圖等,我們以百度網頁的搜索功能為例,使用結合自動化測試框架,完成一個搜索功能的測試。 ...
摘要:單元測試框架作為的標準庫,是其他單元測試框架的基礎??梢院秃团浜鲜褂镁帉憜卧獪y試。官網地址單元測試覆蓋率工具單元測試中還需要用到代碼覆蓋率工具。代碼覆蓋率統計工具用來發現沒有被測試覆蓋的代碼,完善單元測試的覆蓋率。 在應用程序中,單元是具有一個或多個輸入和單個輸出的軟件中最小可測試部分。單元...
摘要:其中用到編程等,還需要花更多的精力去深入學習,當每項技能都能掌握到一定深度,才能稱為一個完整的知識體系。 都有哪些種類的配置文件 pytest.ini:pytes...
本文關鍵闡述了python+pytest自動化技術測試函數測試類測試標準的封裝形式,文章內容緊扣主題開展詳盡的基本介紹,具有很強的實用價值,務必的朋友可以學習一下 序言 那么今天,我想跟大家聊聊python+pytest接口自動化里將編碼開展封裝形式,只有把測試程序開展封裝形式,才會被測試框架鑒別實行?! ±鐔为毑蹇谝缶幋a如下所示: importrequests headers=...
閱讀 919·2023-01-14 11:38
閱讀 891·2023-01-14 11:04
閱讀 750·2023-01-14 10:48
閱讀 2035·2023-01-14 10:34
閱讀 956·2023-01-14 10:24
閱讀 833·2023-01-14 10:18
閱讀 506·2023-01-14 10:09
閱讀 583·2023-01-14 10:02