本文目錄一覽:
如何使用python根據接口文檔進行接口測試
1,關於requests
requests是python的一個http客戶端庫,設計的非常簡單,專門為簡化http測試寫的。
2,開發環境
mac下面搭建開發環境非常方便。
sudo easy_install pip
sudo pip install requests
測試下:python命令行
import requests
r = requests.get(”, auth=(‘user’, ‘pass’))
r.status_code
200
r.headers[‘content-type’]
‘application/json; charset=utf8’
r.encoding
‘utf-8’
r.text
u'{type:User…’
r.json()
{u’private_gists’: 419, u’total_private_repos’: 77, …}
開發工具,之前使用sublime,發現運行報錯,不識別table字符。
IndentationError: unindent does not match any outer indentation level
非常抓狂的錯誤,根本找不到代碼哪裡有問題了。甚至開始懷疑人生了。
python的這個空格區分代碼真的非常讓人抓狂。開始懷念有大括號,分號的語言了。
徹底解決辦法,直接換個IDE工具。使用牛刀,IDA開發。
直接下載社區版本即可,因為就是寫個腳本啥的,沒有用到太複雜的框架。
果然效果非常好,直接格式下代碼,和java的一樣好使,可以運行可以debug。右鍵直接運行成功。
3,測試接口
沒有啥太複雜的,直接使用requests框架即可。
#!/usr/bin/python
# -*- coding: utf-8 -*-
################
import requests
#測試百度
def baidu_func(url):
headers = {}
params = {}
req = requests.post(url, headers=headers, params=params)
print(req.text)
if __name__ == ‘__main__’:
url =
baidu_func(url)
4,總結
測試非常重要,尤其是對外的接口出現的漏洞,需要花時間去仔細測試,同時要仔細分析代碼。
安全是挺重要的事情,要花時間去琢磨。
python學習還是非常容易學習的,一個小時就能把語法學會。
同時滲透測試,安全掃描的好多工具也是python寫的。PyCharm CE版本的開發工具足夠強大,能夠幫你快速學習python。
如果想快速做點界面的開發,wxPython是非常不錯的選擇。
接口自動化測試工具有哪些?
1、CTS,CTS 測試基於Android instrumentation 測試, 其又基於JUnit 測試。說白了, CTS 就是一堆單元測試用例。這也是Java 語言的擅長部分。
2、 Monkey工具,Monkey是Android中的一個命令行工具,可以運行在模擬器里或實際設備中。它向系統發送偽隨機的用戶事件流(如按鍵輸入、觸摸屏輸入、手勢輸入等),實現對正在開發的應用程序進行壓力測試。Monkey測試是一種為了測試軟件的穩定性、健壯性的快速有效的方法。
3、ASE,ASE 意思為Android 腳本環境, 即我們可以通過腳本(比如Python)調用Android 的功能,從而定製一些測試。比如打電話,發短信,瀏覽網頁,等。我們可以擴充它的API(Java 部分), 並用python 腳本調用這些API, 從而實現豐富的測試功能。用於API 部分可以訪問到Android 全部API, python 又能靈活部署測試,所以ASE 的擴展性非常好。
4、Robotium,該工具用於黑盒的自動化測試。可以在有源碼或者只有APK 的情況下對目標應用
進行測試。Robotimu 提供了模仿用戶操作行為的API,比如在某個控件上點擊,輸入Text
等等。
分層的自動化測試
這個概念最近曝光度比較高,傳統的自動化測試更關注的產品UI層的自動化測試,而分層的自動化測試倡導產品的不同階段(層次)都需要自動化測試。
相信測試同學對上面的金字塔並不陌生,這不就是對產品開發不同階段所對應的測試么!我們需要規範的來做單元測試同樣需要相應的單元測試框架,如java的Junit、testNG,C#的NUnit ,python 的unittest、pytest 等,幾乎所有的主流語言,都會有其對應的單元測試框架。
集成、接口測試對於不少測試新手來說不太容易理解,單元測試關注代碼的實現邏輯,例如一個if 分支或一個for循環的實現;那麼集成、接口測試關注的一是個函數、類(方法)所提供的接口是否可靠。例如,我定義一個add()函數用於計算兩個參數的結果並返回,那麼我需要調用add()並傳參,並比較返回值是否兩個參數相加。當然,接口測試也可以是url的形式進行傳遞。例如,我們通過get方式向服務器發送請求,那麼我們發送的內容做為URL的一部分傳遞到服務器端。但比如 Web service 技術對外提供的一個公共接口,需要通過soapUI 等工具對其進行測試。
UI層的自動化測試,這個大家應該再熟悉不過了,大部分測試人員的大部分工作都是對UI層的功能進行測試。例如,我們不斷重複的對一個表單提交,結果查詢等功能進行測試,我們可以通過相應的自動化測試工具來模擬這些操作,從而解放重複的勞動。UI層的自動化測試工具非常多,比較主流的是QTP,Robot Framework、watir、selenium 等。
為什麼要畫成一個金字塔形,則不是長方形 或倒三角形呢? 這是為了表示不同階段所投入自動化測試的比例。如果一個產品從沒有做單元測試與接口測試,只做UI層的自動化測試是不科學的,從而很難從本質上保證產品的質量。如果你妄圖實現全面的UI層的自動化測試,那更是一個勞民傷財的舉動,投入了大量人力時間,最終獲得的收益可能會遠遠低於所支付的成本。因為越往上層,其維護成本越高。尤其是UI層的元素會時常的發生改變。所以,我們應該把更多的自動化測試放在單元測試與接口測試階段進行。
既然UI層的自動化測試這麼勞民傷財,那我們只做單元測試與接口測試好了。NO! 因為不管什麼樣的產品,最終呈現給用戶的是UI層。所以,測試人員應該更多的精力放在UI層。那麼也正是因為測試人員在UI層投入大量的精力,所以,我們有必要通過自動化的方式幫助我們“部分解放”重複的勞動。
在自動化測試中最怕的是變化,因為變化的直接結果就是導致測試用例的運行失敗,那麼就需要對自動化腳本進行維護;如何控制失敗,降低維護成本對自化的成敗至關重要。反過來講,一份永遠都運行成功的自動化測試用例是沒有價值。
至於在金字塔中三種測試的比例要根據實際的項目需求來劃分。在《google 測試之道》一書,對於google產品,70%的投入為單元測試,20%為集成、接口測試,10% 為UI層的自動化測試。
python的哪個模塊可以做接口測試
python接口測試
1.安裝python環境
2.下載python IDE(pyCharm)
備註:
requests是python的要給HTTP客戶端庫,跟urllib,urllib2類似,那為什麼要用requests而部用urllib2呢?官方文檔中是這樣說的:
python的標準庫urllib2提供了大部分需要的HTTP功能,但API太逆天了,一個簡單的功能需要一大堆代碼。而requests比較簡潔,能用更少的代碼實現。
3.下載 安裝 requests第三方模塊
下面就進行接口測試
要使用 requests 首先需要在文件中引用
[python] view plain
import requests
[python] view plain
# 解析json需要
[python] view plain
import json
[python] view plain
# url:接口地址
[python] view plain
# data: 接口需要的數據
[python] view plain
# headers:接口需要的傳遞的headers數據
[python] view plain
# files:若是接口中需要上傳文件則需要用到該參數
[python] view plain
r = requests.post(url, data=data, headers=headers)
[python] view plain
r = requests.post(url, data=data, headers=headers, files=files)
[python] view plain
# 獲取 接口返回的數據信息並解析(如果返回的是json格式的話)
[python] view plain
json_data = json.loads(r.text)
[python] view plain
我一直用這樣的方法寫了20個接口進行測試,突然發現好像代碼有很多重複的呀,是不是可以把重複的內容進行封裝一下了?
[python] view plain
封裝如下:
[python] view plain
Basics_Requests.py
[python] view plain
import requests
import json
””’
#xx_url:接口連接url
#data:接口data需要傳遞的數據(數據格式一般為Dictionary)
#headers:接口headers需要傳遞的數據(數據格式一般為Dictionary)
#variable:headers 中需要改變的參數字段(數據格式為list)
”’
class Basics():
# 初始化
def __init__(self, xx_url, data, headers, variable):
self.xx_url = xx_url
self.data = data
self.headers = headers
self.variable = variable
def basicsparameter(self):
# 發起post請求
url_data = requests.post(self.xx_url, data=self.data, headers=self.headers)
# 把得到的數據轉成json格式
data_json = json.loads(url_data.text)
# 改變請求中的參數值
if self.variable != ”:
for i in self.variable:
self.headers[i] = data_json[i.lower()]
# 把請求的 數據 和 headers 存入 list中
dic_data = {‘data_json’: data_json, ‘headers’: self.headers}
return dic_data
調用封裝方法:
[python] view plain
Test.py
[python] view plain
Basics_Requests
[python] view plain
Basics_Requests.Basics(url, row_data, headers, variable).basicsparameter()
[python] view plain
常見接口測試工具有哪些?使用哪個好?
1.
主流接口測試工具:Jmeter、PostMan、RESTClient、Fiddler、Requests庫,不同測試環境不同需求,選擇不同工具。
1).
Jmeter:Java開發一款開源免費工具,適合接口功能測試、接口自動化測試、接口壓力測試
【推薦】
2).
PostMan:谷歌公司開發的一款工具,分為瀏覽器插件版和客戶端版。
適合開發自測接口、測試調試接口
3).
RESTClient:一款國人開發的火狐瀏覽器插件,界面簡單,支持高亮顯示,調試、自測
推薦。
4).
Fiddler:強大的抓包工具,支持接口請求、響應。
5).
Requests庫:python語言中一個第三方請求庫,使用代碼測試接口不二選擇。注意:適合python語言
以上內容均來自黑馬程序員軟件測試課程筆記
原創文章,作者:NMHL,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/144027.html