Python+Requests介面自動化測試框架
公司內部的一個介面自動化使用框架(之前的基礎上改進)
-
1.資料準備
-資料插入(容易實現的測試場景下所需外部資料)
-準備sql (介面需要重複使用,引數一定得是變數) -
2.整合部署(運維相關了解即可)
-平滑升級驗證指令碼加入自動化
-
3.自動化框架實現
-呼叫mysql
-excel遍歷測試用例
-requests實現介面呼叫
-根據介面返回的code值和Excel對比
-報告反饋
-暴露服務
寫一個簡單登入的介面自動化測試
程式碼的分層如下圖:
coding.png
一、寫一個封裝的獲取excel表格的模組
excel.png
程式碼實現如下:
#!/usr/bin/python
#-*- coding: UTF-8 -*-
# 基礎包:excel的封裝
import xlrd
workbook = None
def openExcel(path):
"""開啟excel"""
global workbook
if (workbook == None):
workbook = xlrd.open_workbook(path, on_demand=True)
def getSheet(sheetName):
"""獲取行號"""
global workbook
return workbook.sheet_by_name(sheetName)
def getRows(sheet):
"""獲取行號"""
return sheet.nrows
def getContent(sheet, row, col):
"""獲取表格中內容"""
return sheet.cell(row, col).value
def release(path):
"""釋放excel減少記憶體"""
global workbook
workbook.release_resources()
del workbook
程式碼封裝後當成模組引用,這還是最開始呢。
二、引用log模組獲取日誌
準備工作:
需要一個日誌的捕獲,包括框架和原始碼丟擲的expection。
程式碼如下:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
# 基礎包:日誌服務
import logging
import time
def getLogger():
global tezLogPath
try:
tezLogPath
except NameError:
tezLogPath = "/data/log/apiTest/"
FORMAT = '%(asctime)s - %(name)s - %(levelname)s - %(message)s'
# file = tezLogPath + time.strftime("%Y-%m-%d", time.localtime()) + ".log"
# logging.basicConfig(filename=file, level=logging.INFO, format=FORMAT)
# 開發階段為了方便除錯,可不輸出到檔案
logging.basicConfig(level=logging.INFO, format=FORMAT)
return logging
三、引用requests模組介面測試
準備工作:
需要的請求型別和執行測試的方法。
程式碼如下:
#!/usr/bin/python#
#-*- coding: UTF-8 -*-
# 基礎包:介面測試的封裝
import requests
import tezLog as log
logging = log.getLogger()
def apiTest(method, url, data ,headers):
"""
定義一個請求介面的方法和需要的引數
:Args:
method - 企業名稱 str
url - 使用者暱稱 str
data - 引數 str
headers - 請求頭資訊 dict
"""
try:
if method == "post":
results = requests.post(url, data, headers=headers)
if method == "get":
results = requests.get(url, data, headers=headers)
if method == "put":
results = requests.put(url, data, headers=headers)
if method == "delete":
results = requests.delete(url, headers=headers)
if method == "patch":
results == requests.patch(url, data, headers=headers)
if method == "options":
results == requests.options(url, headers=headers)
response = results.json()
code = response.get("code")
return code
except Exception, e:
logging.error("service is error", e)
def runTest(sheet):
"""
定義一個執行和斷言的方法
:Args:
sheet - 服務名稱 str(excel頁尾名稱識別的)
"""
rows = excel.getRows(sheet)
fail = 0
for i in range(2, rows):
#這裡為什麼從第二行開始跑,因為會先執行SQL如之前Excel展示的空白位置
testData = excel.getContent(sheet, i, gl.CASE_DATA)
testUrl = excel.getContent(sheet, i, gl.CASE_URL)
testMethod = excel.getContent(sheet, i, gl.CASE_METHOD)
testHeaders = eval(excel.getContent(sheet, i, gl.CASE_HEADERS))
testCode = excel.getContent(sheet, i, gl.CASE_CODE)
actualCode = request.apiTest(testMethod, testUrl, testData, testHeaders)
expectCode = str(int(testCode))
failResults = ' url: ' + testUrl + ' params: ' + testData + ' actualCode: ' + actualCode + ' expectCode: ' + expectCode
if actualCode == expectCode:
logging.info("pass")
elif actualCode != expectCode:
logging.info("fail %s", failResults)
fail += 1
if fail > 0 :
return False
return True
四、關於引數中gl
準備工作:
所有的引數和常量我們會整理到這個檔案中,因為設計業務和服務密碼、資料庫密碼這裡展示一部分。
程式碼如下:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
# 指令碼功能:全部變數
import time
import uuid
CASE_NUMBER = 0 # 用例編號
CASE_NAME = 1 # 用例名稱
CASE_DATA = 2 # 用例引數
CASE_URL = 3 # 用例介面地址
CASE_METHOD = 4 # 用例請求型別
CASE_CODE = 5 # 用例code
CASE_HEADERS = 6 # 用例headers
SQL_ROW = 0 # 預執行SQL的行號
SQL_COL = 1 # 預執行SQL的列號
五、寫一個run檔案,只是用來執行的
程式碼如下:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
# 驗證包:介面測試指令碼
import sys
import core.tezLog as log
import function.common as common
logging = log.getLogger()
"""1.外部輸入引數"""
path = sys.path[0] # 當前路徑
module = sys.argv[1] # 服務模組名
url = sys.argv[2] # 服務地址
host = sys.argv[3] # 資料庫地址
user = sys.argv[4] # 資料庫使用者名稱
password = sys.argv[5] # 資料庫密碼
db = sys.argv[6] # 資料庫名稱
"""2.根據module獲取Sheet"""
logging.info("-------------- Execute TestCases ---------------")
sheet = common.getExcelSheet(path + "/" + common.filename, module)
"""3.資料準備"""
logging.info("-------------- Prepare data through MysqlDB --------------")
sql = common.getPrepareSql(sheet)
common.prepareData(host=host, user=user, password=password, db=db, sql=sql)
"""4.執行測試用例"""
res = common.runTest(sheet, url)
logging.info("-------------- Get the result ------------ %s", res)
#這裡的res是我們平滑升級的時候需要返回結果為TRUE才會繼續下面走。
六、檢視測試報告(部署到jenkins會通過控制檯檢視)
報告.png
相關推薦
python+requests介面自動化測試框架例項詳解教程
前段時間由於公司測試方向的轉型,由原來的web頁面功能測試轉變成介面測試,之前大多都是手工進行,利用postman和jmeter進行的介面測試,後來,組內有人講原先web自動化的測試框架移駕成介面的自動化框架,使用的是java語言,但對於一個學java,卻在學python的我來說,覺得python比起jav
python+requests介面自動化測試框架例項詳解教程(米兔888)
前段時間由於公司測試方向的轉型,由原來的web頁面功能測試轉變成介面測試,之前大多都是手工進行,利用postman和jmeter進行的介面測試,後來,組內有人講原先web自動化的測試框架移駕成介面的自動化框架,使用的是java語言,但對於一個學java,卻在學python的我
Python+Requests介面自動化測試框架
公司內部的一個介面自動化使用框架(之前的基礎上改進) 1.資料準備 -資料插入(容易實現的測試場景下所需外部資料) -準備sql (介面需要重複使用,引數一定得是變數) 2.整合部署(運維相關了解即可) -平滑升級驗證指令碼加入自動化 3.自動化框架實現 -呼叫mysql -excel遍
python--utp介面自動化測試框架
測試套件:testsuite 多個用例放在一起 unittest 1、函式名必須是test開頭,unittest才會幫你執行 2、用例執行的順序是按照函式的首字母排序的,a-z te
python+requests介面自動化測試實戰
python+request+unittest+HTMLTestRunner 首先介紹一下python的requests模組: requests的使用介紹:requests快速入門 環境說明: 1.WIN 7, 64位 2.Python3.4.3 (pip-8.1.2)
python+requests介面自動化測試
轉自https://my.oschina.net/u/3041656/blog/820023 原來的web頁面功能測試轉變成介面測試,之前大多都是手工進行,利用postman和jmeter進行的介面測試,後來,組內有人講原先web自動化的測試框架移駕成介面的自動化框架,使用的是java語言,但對於一個學ja
Python+Requests+Unittest+Excel 介面自動化測試框架之Request模組01
1.Requests模組 a.Request模組是Python中可以實現模擬Http協議的模組 b.安裝方式很多,可以用pip install requests 2.舉例 import requests class Http_Request: #定義一個請求函
【作者: 艾裡艾蘭 】Python+requests+unittest+excel實現介面自動化測試框架
python自動化語言基礎 介面測試知識基礎 一、框架結構: 工程目錄 二、Case檔案設計 三、基礎包 base 3.1 封裝get/post請求(runmethon.py)
Python介面自動化測試框架: pytest+allure+jsonpath+requests+excel實現的介面自動化測試框架(學習成果)
[toc] # 廢話 最近在自己學習介面自動化測試,這裡也算是完成一個小的成果,歡迎大家交流指出不合適的地方,原始碼在文末 # 問題 整體程式碼結構優化未實現,導致最終測試時間變長,其他工具單介面測試只需要39ms,該框架中使用了101ms,考慮和頻繁讀寫用例資料導致 # 環境與依賴 | 名稱
python介面自動化測試框架(post提交新增變數)
1、python介面測試框架包含哪幾部分 資料來源-> GET/POST 傳送請求->接收返回結果->斷言測試結果->生成測試報告(html報告)->網頁報告 2、python介面測試框架 config:存放配置檔案,比如資料庫設定、郵件配置、log配置
Python 基於python+Testlink+Jenkins實現的介面自動化測試框架
目錄 8、 說明 win7 PyCharm 4.0.5 python 3.3.2 testlink-1.9.14 TestLink-API-Python-client-master 1、框架集成了Testlink,可
python + selenium + unittest 自動化測試框架 -- 入門篇
、 預置條件: 1. python已安裝 2. pycharm已安裝 3. selenium已安裝 4. chrome.driver 驅動已下載 二、工程建立 1. New Project:建立自己的工程 2. New Package:建立各個配置包 3. Ne
python+requests介面自動化--請求方法封裝
1 import requests 2 from common.logger import Log 3 from common import cof 4 from common import base 5 6 7 class MyHttpservice(object): 8 9
Python-requests介面自動化小記
之前用過Jmeter和Postman做http介面請求,因工作需要需用程式碼自動化跑覆蓋,我用的是python語言;經過快2周的實踐,已經基本可以實現介面自動化,現將使用過程中遇到的問題和大家分享下。 1、請求https安全
Jmeter+Ant+Jenkins介面自動化測試框架搭建for Windows
前言 軟體開發的V模型大家都不陌生,其中測試階段分為單元測試→功能測試→系統測試→驗收測試。其中單元測試一般由開發同學們自己完成,大部分測試具體實施(這裡不包括用例設計)是從單體功能測試開始著手的。 如果測試一個功能,發現主流程無法走下去,也就是介面不通,這時再打回去開發手裡繼續改,改
介面自動化測試框架開發 (pytest+allure+aiohttp+ 用例自動生成)
近期準備優先做介面測試的覆蓋,為此需要開發一個測試框架,經過思考,這次依然想做點兒不一樣的東西。 介面測試是比較講究效率的,測試人員會希望很快能得到結果反饋,然而介面的數量一般都很多,而且會越來越多,所以提高執行效率很有必要 介面測試的用例其實也可以用來兼做簡單的壓力測試,而壓力測
HttpRunnerManager介面自動化測試框架在win環境下搭建教程
近幾日一直在研究如何把介面自動化做的順暢,目前用的是輕量級jmeter+ant+Jenkins自動化測試框架,目前測試界的主流是python語言,所以一直想用搭建一個基於python的HttpRunnerManager。公司專案也比較多,在上班的過程中偶爾研究了一下,於是就利用週末,在家操作
jmeter--輕量級介面自動化測試框架 jmeter--輕量級介面自動化測試框架
jmeter--輕量級介面自動化測試框架 大致思路: jmeter完成介面指令碼,Ant完成指令碼執行並收集結果生成報告,最後利用jenkins完成指令碼的自動整合執行. 環境安裝: 1.jdk1.7 配置環境變數(參考前面的分頁) 2.jmeter解壓到本地,ant解
pytest介面自動化測試框架學習總結
入職已經1個月多了,前段時間一個緊急的專案,用緊急的手段做成介面自動化,框架用的是jmeter+ant+Jenkins,這個框架的優點就是上手快,寫用例快,總之就是越快越好!明天開始新的專案,估計又是996,抽空把今天學習的pytest框架一些知識做下總結: 1,Assert就是斷言,每個測試用
【selenim3+Python】介面自動化測試教程
一、開啟瀏覽器 selenium3支援基本上目前市面上最常見的幾種瀏覽器,本文只寫其中的chrome、firefox和ie的相關操作; 1、chrome瀏覽器 (1)、chromeDriver獲取 chromeDriver獲取地址為:http://chromed