使用python進行接口測試


  最近在做接口測試,之前公司的方案是使用postman進行接口測試。但是偉大的牆導致我們只能用離線版postman。。然后一個很長很長的接口列表,一個接一個的訪問。我的天哪。。所以萌生了一個想法,使用python編寫一套接口測試腳本,設置接口列表,然后逐條訪問,輸出日志。

  第一個坑:POST 和 GET----GET一般用於獲取/查詢資源信息,而POST一般用於更新資源信息|Get是向服務器發索取數據的一種請求,而Post是向服務器提交數據的一種請求。

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

1 import urllib2
2 url_save = 'http://www.baidu.com/'
3 try:
4     s_save = urllib2.urlopen(url_save).read()
5     print s_save  
6 except urllib2.HTTPError, e:
7     print e.code
8 except urllib2.URLError, e:
9     print str(e)

如上所示就完成了一次GET請求,調用urllib2庫,然后將一個字符串形式的URL傳給urllib2.urlopen函數,最后使用read()方法將GET回來的數據存儲起來。

然后說說POST。其實在python的urllib2庫中,我們剛剛所使用的urlopen函數還有其他幾樣不是必選的入參,因為這些入參給定了初始化的值:

1 def urlopen(url, data=None, timeout=socket._GLOBAL_DEFAULT_TIMEOUT,
2             cafile=None, capath=None, cadefault=False, context=None):

 

如上代碼,urllib庫有一個很智能的毛病。data不給值,訪問方式就是GET,data給了值,方式就會變成POST;所以模擬POST 方式的代碼如下:

import urllib 
import urllib2 
url = 'http://www.example.com' 
# values的形式:name:value
values = {'**' : '***', 
          '**' : '***', 
          '**' : '***' } 
#使用urllib.urlencode函數對values字典進行處理,最終形式為:**=***&**=***
data = urllib.urlencode(values) 
#如果對data順序有要求,建議自己拼接data
req = urllib2.Request(url, data) 
response = urllib2.urlopen(req) 
the_page = response.read()

就像如上代碼,把POST方式所需要的數據寫到data參數中去,POST方式就模擬成功了。

  第二個坑:cookie的使用

使用python獲取cookie所需要的庫叫做cookielib。獲取cookie的例子:

 1 # 這里有四種CookieJar,CookieJar是最原始的
 2 cookie_use = cookielib.CookieJar()
 3 handler = urllib2.HTTPCookieProcessor(cookie_use)
 4 # 使用綁定好CookieJar的handler創建一個opener
 5 opener = urllib2.build_opener(handler)
 6 # 將opener安裝到urllib2中
 7 urllib2.install_opener(opener)
 8 # 使用安裝好的urllib2訪問某一網站獲取cookie
 9 urllib2.urlopen('https://....../login')
10 #這個時候cookie已經被CookieJar獲取到了
11 print cookie_use

在下一步,將獲取到的cookie綁定到opener頭中:

1 '''
2  將獲取到的cookie綁定到opener,上一步獲取的cookie並不滿足如下格式,
3  需要自己進行字符串的切片和拼接 
4 '''
5 opener.addheaders.append(('Cookie', 'name=***&888=888'))

現在的opener就可以用來訪問任意需要登錄的網站了!

 

                                                                    -----python小學生

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM