日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

前言

接口測試是我們在測試工作中經常見到的,我們工作中常用到的接口工具有jmeter,postman,soupUI等工具,那么在通過代碼做接口測試呢?或者通過代碼的方式做接口自動化呢?

技術實踐:如何使用requests通過代碼實現接口測試自動化?

 

requests

requests屬于Python的第三方庫,通常用來發送http和https的請求,既然能向http和https發送請求,那么就能來做接口測試。

安裝

pip install requests

requests使用方法

了解requests是如何安裝的了,也知道了requests的安裝方法了,那么接下來就開始進行實際操作了。

get請求

都知道https請求方式有很多種,如何通過requests來發送get請求呢?這里安靜通過模仿百度搜索內容進行發送請求。

其中get方法中存在3個參數:url和params,其中url表示我們請求的地址,params表示請求參數(get方式的請求存在url地址中),headers表示請求頭信息內容。

import requests

url = 'http://www.baidu.com/s'

headers = {

"User-Agent": "Mozilla/5.0 (windows NT 6.1; WOW64) AppleWebKit/537.36 (Khtml, like Gecko) Chrome/75.0.3770.142 Safari/537.36"

}

params = {

"wd": "測試-安靜"

}

r = requests.get(url=url, params=params,headers=headers)

print(r)

print(r.url)

if '測試-安靜' in r.content.decode('utf-8'):

print('請求成功!')

通過執行結果是成功的。

技術實踐:如何使用requests通過代碼實現接口測試自動化?

 

其中requests的返回內容還有很多種,上面介紹的url,和content只是其中兩種。

r.status_code #響應狀態碼

r.content #字節方式的響應體,會自動為你解碼 gzip 和 deflate 壓縮

r.headers # 請求頭信息

r.json() # Requests中SON

r.url # 獲取url

r.encoding # 編碼格式

r.cookies # 獲取cookie

r.text #字符串方式的響應體

post請求

post請求和get請求類似。post的參數主要有url、data(json)、headers。

url:請求接口地址

data:post請求參數類型

json:post請求參數類型

headers:請求頭信息

這里安靜通過請求查詢天氣的接口來模擬post請求。

data請求

import requests

# 登錄請求地址

url = 'http://apis.juhe.cn/simpleWeather/query'

# 請求頭

headers = {

"User-Agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36",

}

# body數據

data = {

'city': "上海", # 賬號

"key": "331eab8f3481f37868378fcdc76cb7cd", # 密碼

}

# 發送請求

r = requests.post(url, headers=headers, data=data)

print(r.text)

通過執行發現,已經請求成功,并返回了響應結果。

技術實踐:如何使用requests通過代碼實現接口測試自動化?

 

json請求

import requests

url ="http://httpbin.org/post"

# 添加json數據

json = {

"username":"AnJing",

"password":"123456"

}

# 通過json方式添加數據

r =requests.post(url,json=json)

print(r.text)

通過執行結果可以看出我們請求的接口類型。

技術實踐:如何使用requests通過代碼實現接口測試自動化?

 

請求HTTPS

現在的網站都是HTTPS的了,所謂的HTTPS就是加密過的網站,在原有的HTTP的基礎上加上了SSL。HTTPS的請求基本上都是屬于SSL加密的,那么對于這種HTTPS的請求,如果我們通過requests的請求進行訪問,會報一個requests.exceptions.SSLError的錯誤。

技術實踐:如何使用requests通過代碼實現接口測試自動化?

 

對于這種問題,我們可以通過加入參數“verify=False”,requests請求時,verify默認為True,當設置False時,requests請求會進行忽略SSL,從而進行訪問HTTPS請求。

import requests

url ="https://www.51testing.org/htm/brandpc/PZ.html"

r = requests.get(url, verify=False)

print(r.text)

通過加入參數后,在去執行的時候就不會報SSLerror的錯誤了。

session

關于session相信大家都不陌生,他和cookies一樣使用來表示用戶的登錄的一種信息,cookies通常保存在客戶端的,session保存在服務端上。其中session可以相當于一個虛擬的瀏覽器,用來保持登錄的狀態。requests中有單獨方法 requests.session() 的方法用來保存登錄狀態。當然requests中有關于對cookies的登錄,我們可以通過cookies加入到請求中,然后用來模擬登錄場景。然后再去請求其他頁面,可以看看到底我們的會話有沒有保存成功。這里通過模擬博客園的場景進行來操作cookies登錄。

首先通過Fiddler進行抓取登錄前和登錄后的cookies值來判斷博客園的登錄到底是通過什么進行來登錄的。

登錄前的cookies

技術實踐:如何使用requests通過代碼實現接口測試自動化?

 

登錄后的cookies

技術實踐:如何使用requests通過代碼實現接口測試自動化?

 

通過使用fiddler抓取,我們已經找到了登錄的cookies內容,然后通過requests中的cookies進行來添加。具體代碼:

# coding:utf-8

import requests

import urllib3

urllib3.disable_warnings()

s = requests.session()

s.verify = False

url = 'https://passport.cnblogs.com/user/signin'

headers = {

"User-Agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.81 Safari/537.36"

}

r = s.get(url,headers=headers)

cooks = {

".Cnblogs.AspNetCore.Cookies":"這里寫入抓取到的cookies值",

".CNBlogsCookie":"抓取到的cookies值"

}

c = requests.cookies.RequestsCookieJar()

# 登陸有效的cookies

c.set(".CNBlogsCookie", cooks[".CNBlogsCookie"])

c.set(".Cnblogs.AspNetCore.Cookies", cooks[".Cnblogs.AspNetCore.Cookies"])

# 將cookies值全部添加到session中

s.cookies.update(c)

# 訪問后臺地址,確定是否登錄成功

url1 = "https://i.cnblogs.com/posts/edit"

r1 = s.get(url1)

result = r1.content.decode('utf-8')

if "博客后臺 - 博客園" in result:

print("登錄成功!")

通過執行發現,我們已經完成了登錄后,并通過session的形式進行訪問本網站的其他地址一樣是保持著登錄的狀態。

技術實踐:如何使用requests通過代碼實現接口測試自動化?

 

重定向

接口測試中也經常遇到重定向的問題,什么是重定向?就是通過各種方法將各種網絡請求重新定個方向轉到其它位置。在requests中也有這對重定向的操作allow_redirects其中參數默認是True就是允許重定向,當我們請求的時候,將這個參數設置成False,就能不讓其進行重定向。

# coding:utf-8

import requests

url = 'http://github.com'

# 重定向為False

r = requests.get(url, allow_redirects=False)

print('拒絕重定向請求的狀態碼:%s'%(r.status_code))

print('拒絕重定向請求地址:%s'%(r.url))

# 重定向為True(默認為True)

r2 = requests.get(url)

print('允許重定向請求的狀態碼:%s'%(r2.status_code))

print('允許重定向請求地址:%s'%(r2.url))

通過執行發現,我們的參數已經設置成功了。在拒絕重定向的時候請求的狀態為301,允許重定向的時候為200。

技術實踐:如何使用requests通過代碼實現接口測試自動化?

 

總結

安靜簡單地介紹了requests中的一些常用方法,這些方法可以幫助我們通過python+requests進行編寫關于接口測試的方便的代碼。等熟練使用requests后可以進行嘗試編寫自動化測試代碼進行輔助日常測試工作。

分享到:
標簽:接口 測試
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定