導航:首頁 > 編程語言 > python調用介面測試

python調用介面測試

發布時間:2023-03-02 02:49:00

① 用 python 為介面測試自動生成用例

基於屬性的測試 會產生大量的、隨機的參數,特別適合為單元測試和介面測試生成測試用例

盡管早在2006年haskell語言就有了 QuickCheck 來進行」基於屬性的測試「,但是目前來看這依然是一個比較小眾的領域,參考資料有限,本文如有不足,歡迎指正。

在過去的測試實踐中,執行測試時通常需要明確的內容(Value):

這些內容可以通過」判定樹「或者」判斷表「來表示,然後測試的執行過程變成了這樣

可以稱為 基於表的測試

在最初,這給了我們測試的方向,但是缺點也非常明顯:

你要足夠多的"X->Y" 才能可能覆蓋到隱蔽的bug。

這里請大家回答幾個問題:

如果以上問題的答案不是yes,那麼 基於屬性的測試 就是你需要掌握的東西!

基於屬性的測試和基於表的測試,最大的區別可以這樣描述:

vs

於是利用工具生成大量的X類數據,進行測試,並驗證結果是否Y類。

值得注意的是:

在不同的語言中有不同的工具來實現,比如:

本文以python為例進行演示:

假設有add函數,接收兩個類型整數參數,並返回它們的相加結果

首先寫出一個簡單的測試用例

正如前面所說,一個這樣的用例,根本沒信心覆蓋全部的場景,例如:

所以接下來怎麼辦?

改為基於屬性的測試

執行結果

由結果可知,工具根據 參數是整數 這一規范,自動生成、執行了大量的測試用例

介面測試和函數的單元測試非常相似:

此外介面文檔作為前後端、甚至測試開發的對接窗口,對參數的要求約定的更加細致,

以OpenAPI為例,每個參數可以有以下屬性:

於是為介面生成符合要求的參數就變得可行了,舉個例子:

這是以unittest為例進行封裝的結果,只需要在TestCase中指定openapi的內容(或路徑),

啟動測試框架時,會自動讀取、解析介面文檔,並生成測試用例

下面是部分執行日誌,可以看到對介面發送了隨機參數,並獲得返回值

文章來自https://www.cnblogs.com/dongfangtianyu/p/api_test_by_pbt.html

② python怎麼使用api介面測試

在開發中,需要測試web-api的介面 spring mvc 使用單元測試非常方便,但是,受不了單元測試的啟動速度。用python寫了一個小腳本,用於測試介面,
測試腳本配置文件
api.yaml
server:
url: http://127.0.0.1:9000/ihome/

api:
name:
#api-v2-neighbor-list.yaml
- api/v2/neighbor/list

api-v2-neighbor-list.yaml
介面配置文件
method:
post
data:
#post 的 body 的json
postSid: a1
userSid: u2

python 腳本
import requests, json, yaml, sys

def apiTest(apiName):
f = open("api.yaml")
obj = yaml.safe_load(f)
f.close()

if apiName != "":
runApi(obj["server"]["url"] + apiName, apiName.replace("/", "-") + ".yaml")
return;

apis = obj['api']["name"]
for api in apis:
runApi(obj["server"]["url"] + api, api.replace("/", "-") + ".yaml")

def runApi(url, dataFile):
headers = {'Content-Type' : 'application/json; charset=UTF-8',
'X-Requested-With' : 'XMLHttpRequest',
'Connection' : 'keep-alive',
'User-Agent' : 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.110 Safari/537.36'
}

③ 用python實現介面測試(十、Yaml操作)

前言

什麼是YAML?

YAML參考了其他多種語言,包括:XML、C語言、Python、Perl以及電子郵件格式RFC2822。 Clark Evans在2001年5月在首次發表了這種語言,另外Ingy döt Net與Oren Ben-Kiki也是這語言的共同設計者。

YAML是"YAML Ain't a Markup Language"(YAML不是一種置標語言)的遞歸縮寫。 在開發的這種語言時,YAML 的意思其實是:"Yet Another Markup Language"(仍是一種置標語言),

格式及示例

數據結構可以用類似大綱的縮排方式呈現,結構通過縮進來表示,連續的項目通過減號「-」來表示,map結構裡面的key/value對用冒號「:」來分隔。

示例:

PyYAML是一個Python的YAML解析器。

安裝指令:pip   install    PyYaml

官網地址: 網站

示例1

示例2

④ python多介面有依賴如何調用

方法如下:
1. 對於單介面測試如果依賴介面只需要在測試開始執行一次,那麼可以將依賴介面的請求放在類級前置方法中,然後通過全局變數或者當前用例類屬性來傳遞依賴數據。
2. 對於單介面測試如果依賴介面需要在每個用例前執行,那麼可以將依賴介面的請求放在方法級前置方法中,然後通過用例對象屬性來傳遞依賴數據
3. 對於多介面的業務流測試,可以將下一個介面需要依賴的數據通過當前用例類屬性來傳遞依賴數據。
Python由荷蘭數學和計算機科學研究學會的Guido van Rossum 於1990 年代初設計,作為一門叫做ABC語言的替代品。 Python提供了高效的高級數據結構,還能簡單有效地面向對象編程。Python語法和動態類型,以及解釋型語言的本質,使它成為多數平台上寫腳本和快速開發應用的編程語言,隨著版本的不斷更新和語言新功能的添加,逐漸被用於獨立的、大型項目的開發。

⑤ 如何使用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 _func(url):
headers = {}
params = {}
req = requests.post(url, headers=headers, params=params)
print(req.text)
if __name__ == '__main__':
url =
_func(url)

4,總結
測試非常重要,尤其是對外的介面出現的漏洞,需要花時間去仔細測試,同時要仔細分析代碼。
安全是挺重要的事情,要花時間去琢磨。
python學習還是非常容易學習的,一個小時就能把語法學會。
同時滲透測試,安全掃描的好多工具也是python寫的。PyCharm CE版本的開發工具足夠強大,能夠幫你快速學習python。
如果想快速做點界面的開發,wxPython是非常不錯的選擇。

⑥ python 介面升級怎麼測試

測試思路:

1、先把每個http介面一個一個寫腳本測試。(提交的json串直接放在data字典中,這里沒有用到excel等寫測試用例,測試用例直接用腳本實現。)
2、寫完所有介面的測試腳本後,由於一個介面有好幾個測試用例,所有要把同一個介面的py腳本封裝成方法,每一個介面封裝成一個介面類。
3、用testsuite直接調用這些介面類,構造測試集;或利用unittest自動識別測試用例,TestLoader類中提供的discover()方法。

(命名規則:介面名稱要以test_XXX開頭)
就好把所有的介面測試用例連起來構建自動化測試了。
4、最後利用HTMLTestRunner生成測試報告。

⑦ python怎麼做介面測試工具

之前使用過urllib和urllib2做介面測試,在做的途中,感覺使用urllib2直接進行的get,post 請求並沒有那麼好用。作為測試人員,所需要的測試工具應當以方便為第一要務,測試的耗時只要是真正的無人值守,耗時不是太久的都可以接受。所以,本人又嘗試了一個新的包:requests。

Requests 是用Python語言編寫,基於 urllib,採用 Apache2 Licensed 開源協議的 HTTP 庫。它比 urllib 更加方便,可以節約我們大量的工作,完全滿足 HTTP 測試需求。Requests 的哲學是以 PEP 20 的習語為中心開發的,所以它比 urllib 更加 Pythoner。更重要的一點是它支持 Python3 !推薦一篇文章,上面有該包的詳細說明傳送門,以下只會寫到我用到的部分,所以更多的了解需要自己去搜資料

好了,我們開始吧!!

介面測試中重要的部分:

1.get和post方法

2.用到的參數

3.請求頭

4.cookie

5.日誌輸出

6.如何調試你的程序--藉助fiddler

按照以上的順序,我將一一說明我的搞法,因為編碼能力有限,所以可能看著很low

一、get和post

requests包很好的實現了post和get方法,示例:

1 import requests2 response_get = requests.get(url, data, headers, cookies)3 response_post = requests.post(url, data, headers, cookies)

其他的訪問方式如put,head等等,用法幾乎都是如此,因為沒用到,所以省略

現在一般的介面返回值有頁面和json倆種,按照需求,可以分別使用response.text或者response.content獲取,text獲取的是unicode類型的返回值,而content返回值是str類型,所以我一般使用content來獲取返回值,因為這樣獲取的返回值可以直接使用正則或者in的方式來驗證返回值結果是否正確。

我自己為了實現介面的自動訪問,所以又在requests上面加了一層封裝,就像下面這樣:

三、cookie

一款產品的介面測試中必定會使用登錄狀態,需要使用cookie實現,之前寫過使用cookiejar獲取cookie,requests中獲取cookie的方法更為簡單,不過首先你得知道是哪個介面set了cookie,不過一般是登錄啦。登錄介面訪問之後set了cookie,那好,就去調用登錄介面,然後拿到搞回來的cookie:

# 只需要這樣!!login = requests.post(login_url, data=login_data, headers=login_header)
cookie = login.cookies

這個cookie就是登錄狀態了,拿著隨便用,需要登錄的就直接cookies=cookies

四、日誌輸出

這里注意看第二步中介面數據,有介面描述,也有介面是啥,第一步中又把content做成返回值了,具體拼接方式自己想吧,東西全有了,想寫啥寫啥,還可以加上獲取本地時間的api獲取介面運行時間,log文件該長啥樣是門學問,這里就不獻丑了。

五、借用fiddler調試你的腳本

requests允許使用代理訪問,這有啥用,真有!fiddler是一款截包改包的工具,而且通過擴展可以進行請求間的比對,這樣讓你的程序訪問的請求和真正正確的請求作對比,為啥我的程序訪問出錯?是不是缺了請求頭?參數是不是丟了?cookie是不是少了?很容易看出來。寫法如下:

proxies = { "http": "http://127.0.0.1:8888", "https": "http://127.0.0.1:8888"}
requests.post(url, proxies=proxies)

這樣就可以走代理了,除fiddler以外還有charles和burp suite可以使用,具體看個人喜好吧。

⑧ python http介面測試腳本怎麼寫

根據Testcase的具體業務邏輯用事先准備好的測試數據去調用封裝好的API介面,驗證實際返回結果是否與預期返回結果一致.

測試數據可以以各種形式存放,如Excel數據表:
TestCaseName uname method Expected Result
TestCase1 aaaa GET ....
TestCase2 aaaa POST ....
TestCase3 bbbb GET ....

閱讀全文

與python調用介面測試相關的資料

熱點內容
增量方式編程 瀏覽:228
單片機反接為啥會燒壞 瀏覽:944
河北網路伺服器雲伺服器 瀏覽:352
編程序員年薪百萬 瀏覽:998
網通的寬頻玩電信伺服器地址 瀏覽:828
解壓視頻搞笑大全爆笑 瀏覽:614
米兔解壓積木隱藏款金屬 瀏覽:574
window命令行svn 瀏覽:616
8051單片機包含多大的ram 瀏覽:812
man文件linux 瀏覽:283
javaweb實現頁面跳轉 瀏覽:126
命令如什麼 瀏覽:316
centos如何使用ftp伺服器 瀏覽:982
直立車陀螺儀演算法 瀏覽:70
coreldrawpdf下載 瀏覽:896
虛擬主機雲伺服器軟體服務 瀏覽:373
蘋果的怎麼拉安卓的打游戲 瀏覽:415
游戲程序員負責角色 瀏覽:316
於丹pdf 瀏覽:718
反編譯ref 瀏覽:551