国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

2023最新合集Python自動化測試開發(fā)框架【全棧/實戰(zhàn)/教程】合集精華,學(xué)完

2023-04-02 21:47 作者:碼尚軟件測試平臺  | 我要投稿

一、目前軟件測試的市場行情以及測試人員能力標準。

這兩天我聽了幾個去京東、平安銀行,阿里等大廠的招聘錄音:總結(jié)一下:

一般這些大廠業(yè)務(wù)測試:5-6成,接口,自動化,性能:4-5成,流程規(guī)范:1成

從上面的需求我們不難看出目前市面上對測試人員的要求:綜合型的測試人才,側(cè)重業(yè)務(wù)能力(京東是小B端業(yè)務(wù),平安銀行信用卡業(yè)務(wù)),代碼能力(在自動化框架這一塊有一定的建樹)以及開發(fā)思維

(代碼的封裝能力)。

?

而接口測試或者接口自動化是每一個面試中都必問的環(huán)節(jié)。比如:(只口述,不打字) 1.主流接口測試工具:????????????????????Postman+Newman+Jenkins持續(xù)集成接口自動化(基于Javascript語言) Jmeter+Ant+Jenkins持續(xù)集成接口自動化(基于Java語言)

Apifox+Apifox-cli+Jenkins持續(xù)集成接口自動化(基于Javascript語言)

?

2.接口自動化測試以及接口自動化測試平臺:(一般適用于大中型的項目或者公司) python+requests+pytest+yaml+allure+logging+jenkins接口自動化。

開發(fā)自動化測試平臺。

?

既然我們有postman,jmeter,apifox等工具都可以實現(xiàn)接口測試,為什么我們要封裝框架或者是開發(fā)測試平臺???????????????????????????????????????工具弊端如下:??1.敏捷開發(fā)接口數(shù)量巨大,如何實現(xiàn)團隊合作和版本控制(如果是聯(lián)網(wǎng)協(xié)作,安全問題?)。

2.功能太死板,有些接口功能難以實現(xiàn)(比如說:自定義加密,RSA加密,簽名等)。

3.當接口項目當中出現(xiàn)了多種協(xié)議的接口。

4.沒有辦法生成美觀的測試報告以及日志監(jiān)控的實現(xiàn)。

5.框架或平臺可以自定義功能并推廣到所有的項目中復(fù)用。


基于目前的市場形式以及行業(yè)需求,所以從今天開始我們就和大家講三天的接口自動化VIP課程,希望對大家找工作和跳槽有所幫助,同時也希望大家能夠認真的學(xué)完并且動手實踐起來。

?

二、全面熟練Requests庫以及底層方法調(diào)用邏輯??????????????????1.requests庫是用來發(fā)送HTTP請求,接收HTTP響應(yīng)的Python第三方庫,主要用于做接口自動化測試,使用前需要安裝:

??

2.?詳解Requests模塊常用方法:

?


1?

def?get(url,?params=None,

2?url:接口請求地址

**kwargs): 發(fā)送get請求


3?params:是get請求用于傳參,這個參數(shù)會自動的以?的方式加到url之后,多個參數(shù)之間用&分割。

4?**kwargs:可變長度字典參數(shù)

5

6?def?post(url, data=None, json=None, **kwargs):?發(fā)送post請求

7?data:用于傳參

8?json: 用于傳參

9?files: 文件上傳

10

11?基于Postman:

12?form-data:?既有表單參數(shù)也有文件上傳 files

13?Content-Type:multipart/form-data

14?x-www-form-urlencoded 表單 data

15?Content-Type:application/x-www-form-urlencoded?(data)

16?raw:?json(json),xml(data),text(data)

17?Content-Type:application/json (json)

18?Content-Type:text/plain (data)

19?Content-Type:application/javascript?(data)

20?Content-Type:text/html (data)

21?Content-Type:application/xml (data)

22?binay:二進制文件上傳(data)

23?Content-Type:application/octrent-stream (data)

24

25?def?put(url, data=None, **kwargs): 發(fā)送put請求

26?def?delete(url, **kwargs): 發(fā)送delete請求

27

28?requests模塊下的:

29?def?request(method, url, **kwargs): 發(fā)送任意請求/它是get,post,put,delete的底層方法。


?



30

31?def session(): 獲得一個session對象

32?session對象的:

33?def request( session對象的request方法

34?self,

35?method, 請求方式?get?post put delete

36?url, 請求URL地址,接口文檔標準的接口請求地址

37?params=None, params參數(shù):請求數(shù)據(jù)中的鏈接,常見的一個get請求,請求參數(shù)都是放在url地址

38?data=None, data參數(shù):請求數(shù)據(jù),參數(shù)為表單的數(shù)據(jù)格式

39?json=None, json參數(shù):接口常見的數(shù)據(jù)請求格式

40?headers=None, 請求頭:請求頭信息 ,http請求中,編碼方式等內(nèi)容的添加

41?cookies=None, cookie信息:保存用戶的登錄信息。比如做一些充值功能,但是需要用戶已經(jīng)登錄

42?files=None, 文件上傳


43

44?auth=None, 鑒權(quán)的意思,接口設(shè)置操作權(quán)限

45?timeout=None, 超時處理

46?allow_redirects=True, 重定向,請求不成功,再次請求(該功能并不是很常用)

47?proxies=None, 設(shè)置代理

48?hooks=None, 鉤子

49?stream=None, 文件下載功能,通過請求方式,下載文件,進行驗證

50?verify=None, 證書驗證?1.要么請求忽略證書 2.要么加載證書地址

51?cert: CA證書

52?):

53

54?requests.request()和session.request()的區(qū)別在于:

55?前者的每個請求都是獨立,后者會自動的關(guān)聯(lián)所有的請求的cookie信息(類似于jmeter的http cookie管理器

?

?

3.?requests模塊中的response對象的屬性和方法?編寫一個簡單的get案例之后講解Response對象。

使用requests方法后會返回一個Response對象,存儲服務(wù)器的返回信息。Response返回信息如下:

?



?

?

三、Requests接口自動化測試實戰(zhàn)?1.get請求接口???????????????2.get請求接口(需要接口關(guān)聯(lián))????3.post請求接口(包括json傳參和data傳參) 4.文件上傳接口

5.訪問phpwind首頁接口(正則表達式應(yīng)用)????????????6.登錄phpwind接口(包括:請求頭,cookie鑒權(quán),session鑒權(quán))

?

1?

class TestApi:

?

2

3?#類變量

4?access_token?=?""

5?csrf_token =?""

6?session?= requests.session() #創(chuàng)建會話對象

7

8?#get請求接口

9?def test_get_token(self):

10?urls =?"https://api.weixin.qq.com/cgi-bin/token"

11?datas?=?{

12?"grant_type":"client_credential",

13?"appid":"wx6b11b3efd1cdc290",

14?"secret":"106a9c6157c4db5f6029918738f9529d"

15 }

16?res =?requests.get(url=urls,params=datas)

17?result =?res.json()

18?TestApi.access_token?=?result["access_token"]

19?print(result["access_token"])

20?#在第一個接口里面獲取到access_token鑒權(quán)碼

21

22?#get請求接口(需要接口關(guān)聯(lián))

23?def test_select_flag(self):

24?urls =?"https://api.weixin.qq.com/cgi-bin/tags/get"

25?datas?=?{

26?"access_token":?TestApi.access_token

27 }

?

28 res

=?requests.get(url=

urls,?params=

datas)



29 print(res.json())

?

30

31?#post請求接口(包括json傳參和data傳參)

32?def test_edit_flag(self):

33?urls =?"https://api.weixin.qq.com/cgi-bin/tags/update"

34?ps?=?{

35?"access_token":?TestApi.access_token

36 }

37?datas?=?{"tag":{"id":7206,"name":"beibei"+str(int(time.time()))}}

38?res?=?requests.post(url=urls,data=json.dumps(datas),params=ps)

39?print(res.json())

?

40

41?#文件上傳接口

42?def test_file_upload(self):

43?urls?=?"https://api.weixin.qq.com/cgi-bin/media/uploadimg?access_token="+TestApi

44?datas?=?{

45?"media":open(r"E:\shu.png","rb")

46 }

47?res =?requests.post(url=urls,files=datas)

48?print(res.json())

?

49

50?#訪問phpwind首頁接口(正則表達式應(yīng)用)

51?def test_phpwind(self):

52 urls =?"http://47.107.116.139/phpwind"

53?#res?=?requests.get(url=urls)

54?res =?TestApi.session.get(url=urls)

55?result=res.text

56?TestApi.csrf_token?=?re.search('name="csrf_token"?value="(.*?)"',result).group(1

57?print(TestApi.csrf_token)

58

59?#登錄接口(包括:請求頭,cookie鑒權(quán),session鑒權(quán))

60?def test_login(self):

61?urls=?"http://47.107.116.139/phpwind/index.php?m=u&c=login&a=dorun"

62?datas?=?{

63?"username":"admin",

64?"password":"msxy",

65?"csrf_token":TestApi.csrf_token,

66?"backurl":"http://47.107.116.139/phpwind/",

?



?

?

接口關(guān)聯(lián)必用的三種方式以及對應(yīng)python庫詳解:

1.通過類變量保存中間變量實現(xiàn)接口關(guān)聯(lián)。

2.通過單獨的文件保存中間變量實現(xiàn)接口關(guān)聯(lián)。

3.極限封裝成零代碼方式提取和使用實現(xiàn)接口關(guān)聯(lián)。

?

(1)?正則提取(正則只能夠提取字符串的數(shù)據(jù))?re.seach:只匹配一個值,通過下標[1]取值,沒有匹配到返回None????re.findall:匹配多個值,返回列表list,多個值通過下標取值,沒有匹配到返回None

??

?

(2)?JsonPath提?。?/strong>jsonpath只能夠提取json格式的數(shù)據(jù)

jsonpath.jsonpath,返回的是一個列表,通過下標取值,沒有找到返回None

?

語法規(guī)則:

(1)?$?根節(jié)點


(2)?.或者[] 用于獲取子節(jié)點的對象。如:

$.jiaoyu

$["mashang"]

區(qū)別在于[]的方式它的功能更強大,它可以同時取多個節(jié)點:如:

$["mashang","jiaoyu"]

(3)?.. 表示通過相對路徑取值,通過遞歸取值。

$..name

(4)?*?通配符

$.*?匹配到根節(jié)點下所有的節(jié)點的值。

$..*?遞歸匹配到根節(jié)點下所有的對象或者。

(5)?數(shù)組的處理方式,它是通過[]來處理,如:

$.mashang[0].student[1].name 0代表取數(shù)組的第1個值。 切片取值:從start(包含)開始到end(不包含)結(jié)束。如:

$.mashang[1:3]?下標從1開始到2

$.mashang[:3] 下標從0開始到2

$.mashang[1:] 下標從1開始到最后的下標

$.mashang[-2:-1]?-1是倒數(shù)第1個,-2倒數(shù)第2個。

?

四、接口自動化框架封裝:

目的:簡化接口自動化的落地實施,統(tǒng)一化,標準化,企業(yè)期望達到:不懂代碼的團隊也能夠通過框架實現(xiàn)接口自動化測試。

?

(1)、接口自動化統(tǒng)一請求封裝為什么需要封裝統(tǒng)一接口請求: 1.去除重復(fù)的,冗余的代碼。

2.實現(xiàn)統(tǒng)一的異常處理和日志監(jiān)控。封裝代碼如下:

?



2023最新合集Python自動化測試開發(fā)框架【全棧/實戰(zhàn)/教程】合集精華,學(xué)完的評論 (共 條)

分享到微博請遵守國家法律
太康县| 康乐县| 罗江县| 玛多县| 吴旗县| 娱乐| 玉树县| 仁寿县| 开原市| 吉安市| 临夏县| 鲁甸县| 阿合奇县| 毕节市| 嘉祥县| 平定县| 永福县| 克拉玛依市| 牡丹江市| 汽车| 双牌县| 奈曼旗| 贵阳市| 桦甸市| 陆良县| 苏州市| 邛崃市| 唐山市| 洛隆县| 巴东县| 开鲁县| 黑龙江省| 望江县| 兴宁市| 宣化县| 汤阴县| 合山市| 滨州市| 沙湾县| 靖安县| 日喀则市|