當前位置:首頁 » 編程語言 » python測試介面

python測試介面

發布時間: 2022-07-05 01:58:47

1. python自動化測試介面怎麼實現模擬不同的網路環境訪問介面

用python做自動化測試,主要是介面測試和UI自動化測試。
一、介面測試:
http協議的舉例:
可以用python自帶的urllib\urllib2模擬,模擬前端向伺服器發送數據,獲取返回值後,進行校驗和判斷來進行介面測試。
網上的例子也比較多,這里簡單說一下,
比如request中data的邊界值測試、字元測試、非空為空測試等等,都可以做
二、UI自動化測試:
html頁面(python+selenium)或者一些安卓app(python+appiun)可以用。
主要是頁面元素的檢查、輸入等。
比如可以寫一個腳本,自動登錄網路頁面,搜索某一個關鍵字,並且獲得此關鍵字的網路搜索數量。

2. 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'
}

3. python 介面升級怎麼測試

測試思路:

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

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

4. python介面測試如何將

做過介面測試或者做過前端的人都知道,介面的訪問方式是不一致的,所以才會使用postman來進行介面測試,因為它可以設置post和get方式。使用python模擬這倆種訪問方式是重中之重。先說GET方式。GET方式就比較簡單了,把介面放進瀏覽器地址欄,點下回車就完成了一次GET。所以就需要使用python訪問URL就可以模擬一次GET 測試。

5. 如何用python unittest去測試c#的介面

1.首先使用 python 的 requests 對介面進行測試

[python] view plain
# TestInface.py
import requests,json
url = visit.get_test_url()
news_url = url+'news.info'
headers = baseToken.basetoken_datas()['headers']
def new_data(data):

r = requests.post(news_url,data=data,headers=headers)
cnn = json.loads(r.text)
return cnn

2.使用unittest調用介面,且對介面測試的結果進行統計

[python] view plain
# TestCase.py
# -*- coding:utf-8 -*-
import unittest
import TestInface

# 對執行的case結果進行統計
# ---------------------------------------------------------------------------------------------------------------------
text = ""
num_success = 0
num_fail = 0

# 測試通過
def decide_success(joggle):
global num_success
num_success += 1
print_out(joggle + ":介面測試通過\n")
return num_success

# 測試不通過
def decide_fail(txt, joggle):
global num_fail
num_fail += 1
print_out(joggle + ":介面測試未通過 \n錯誤信息: " + txt + "\n")
return num_fail

# 郵件內容寫入 & 客戶端輸出
def print_out(message):
global text
text += "\n" + message
return text

# 返回值判斷
def decide_result(result, code, joggle):
if result['code'] == code:
decide_success(joggle)
return "pass"
else:
txt = u"期望返回值:" + str(code) + u" 實際返回值:" + str(result) + '\n' + result['message']
decide_fail(txt, joggle)
return "fail"

def decide_Count():
data = {
'num_success': num_success,
'num_fail': num_fail,
'text': text
}
return data
# --------------------------------------------------------------------------------------------------------------------
# 定義 unittest
class MyTestCase(unittest.TestCase):

# 初始化工作
def setUp(self):
pass

# 退出清理工作
def tearDown(self):
pass
def test_Case1(self):
id = 16
data = {'id':id}
a = TestInface.new_data(data)
decide_result(a,0,'test_Case1')

3.使用suite對case進行管理

[python] view plain
# TestSuite.py
# -*- coding:utf-8 -*-
import unittest
import TestCase

def test_InterFace():

# 構造測試集
suite = unittest.TestSuite()
suite.addTest(TestCase("test_Case1")) # unittest中的測試用例

runner = unittest.TextTestRunner()
runner.run(suite)
#對測試集進行測試需要返回值
# return suite

if __name__ == '__main__':

# unittest.main(defaultTest='test_InterFace')
# 執行測試
runner = unittest.TextTestRunner()
runner.run(test_InterFace())

4.對介面的數據進行統計

[python] view plain
# TestCensus.py
# -*- coding:utf-8 -*-
import time
import TestSuite
import send_email
import TestCase

class Test_Calss():

def census(self):
text = ''
# 初始化測試起始時間
start_time = time.time()
# 調用suite測試集
TestSuite.test_InterFace()
# 結束執行時間計算
end_time = time.time()

result = TestCase.decide_Count()
# 介面測試統計說明
total_use_case = u"執行用例總數:" + str(result['num_success'] + result['num_fail']) + \
u"\t通過數:" + str(result['num_success']) + \
u"\t不通過數:" + str(result['num_fail'])
total_time = u"\t總共耗時:" + str(round((end_time - start_time), 3)) + u'秒'
text = result['text'] + total_use_case + total_time
print (text)

# 發生測試報告郵件
send_email.email_file(text)

if __name__ == '__main__':
Test_Calss().census()
[python] view plain
<pre code_snippet_id="2001712" snippet_file_name="blog_20161123_4_8691238"></pre><pre code_snippet_id="2001712" snippet_file_name="blog_20161123_1_3110897" name="code" class="python"><pre code_snippet_id="2001712" snippet_file_name="blog_20161123_1_3110897" name="code" class="python"><pre code_snippet_id="2001712" snippet_file_name="blog_20161123_1_3110897" name="code" class="python"><pre code_snippet_id="2001712" snippet_file_name="blog_20161123_1_3110897" name="code" class="python"><pre code_snippet_id="2001712" snippet_file_name="blog_20161123_1_3110897" name="code" class="python"><pre code_snippet_id="2001712" snippet_file_name="blog_20161123_1_3110897"></pre>
<pre></pre>
<pre></pre>
<pre></pre>
<pre></pre>
<pre></pre>
<pre></pre>
<pre></pre>
<pre></pre>
<pre></pre>
<pre></pre>
<pre></pre>
<pre></pre>
<pre></pre>
<pre></pre>
<pre></pre>
<pre></pre>
<pre></pre>
<pre></pre>
<pre></pre>
<pre></pre>
<pre></pre>
<pre></pre>
<pre></pre>
<pre></pre>
<pre></pre>
<pre></pre>
<pre></pre>
<link rel="stylesheet" href="http://static.blog.csdn.net/public/res-min/markdown_views.css?v=1.0">
</pre></pre></pre></pre></pre>

6. 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

7. 什麼是Python介面自動化測試,具體能做什麼,說明白點

就是使python去實現介面測試,說白了就是寫一些測試邏輯。python去寫,速度快,簡單python也有很多自動化測試相關的工具。roboframework,是一個自動化測試框架,寫自動化非常簡單。

8. python 介面測試怎麼做斷言

要看你是什麼樣的介面
比如比較簡單的http
service
的介面,需要提供介面的訪問地址,訪問方式(get?
post?put?delete?),以及參數
然後用python來模擬發出請求,得到介面的返回,返回是否正確
你做測試,肯定清楚什麼樣的輸入輸出是正確的

9. 如何使用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是非常不錯的選擇。

10. 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可以使用,具體看個人喜好吧。

熱點內容
滑板鞋腳本視頻 發布:2025-02-02 09:48:54 瀏覽:433
群暉怎麼玩安卓模擬器 發布:2025-02-02 09:45:23 瀏覽:557
三星安卓12彩蛋怎麼玩 發布:2025-02-02 09:44:39 瀏覽:744
電腦顯示連接伺服器錯誤 發布:2025-02-02 09:24:10 瀏覽:537
瑞芯微開發板編譯 發布:2025-02-02 09:22:54 瀏覽:147
linux虛擬機用gcc編譯時顯示錯誤 發布:2025-02-02 09:14:01 瀏覽:240
java駝峰 發布:2025-02-02 09:13:26 瀏覽:652
魔獸腳本怎麼用 發布:2025-02-02 09:10:28 瀏覽:538
linuxadobe 發布:2025-02-02 09:09:43 瀏覽:212
sql2000資料庫連接 發布:2025-02-02 09:09:43 瀏覽:726