python介面自動化資料庫版,python介面自動化常用庫

本文目錄一覽:

python 的介面自動化測試使用的核心庫是哪一個?

requests 庫,requests是使用 Python 編寫的,基於 urllib 實現,可以調用該庫的部分 API 直接向伺服器發送請求,並接收響應(角色定位: 相當於瀏覽器),一般可以在介面自動化測試時調用。當初在黑馬程序員學的初級知識。

怎麼搭建 python 的介面自動化測試框架?

1.框架搭建

1.1 將struts2中的jar文件導入到項目中

commons-fileupload-1.2.1.jar,commons-io-1.3.2.jar,freemarker-2.3.15.jar,ognl-2.7.3.jar

struts2-core-2.1.8.1.jar,xwork-core-2.1.6.jar

1.2 將struts.xml文件拷貝到項目的src目錄下

1.3 修改web.xml文件

添加:

filter

filter-namestruts2/filter-name

filter-classorg.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter/filter-class

/filter

filter-mapping

filter-namestruts2/filter-name

url-pattern/*/url-pattern

/filter-mapping

2.action中方法的調用方式

2.1 自動方法調用(只能調用execute)

2.2 指定方法調用(通過設置action標籤中的method屬性)

2.3 動態方法調用(在調用時,在action後加!方法名稱,如:login!deletUser)

注意:constant name=”struts.enable.DynamicMethodInvocation” value=”true” /

2.4 通配符調用

3. action接收客戶端參數的方式

3.1 直接在action中定義參數變數,並生成set和get方法

3.2 定義接收參數的類

注意:都要為action的成員變數提供get和set方法

3.3 讓action實現ModelDriven介面,並實現裡面的getModel方法

4.獲取request,session,application的方式

4.1 用ActionContext獲取,實際上獲取到的都是Map對象

4.2 用ServletActionContext獲取,獲取到的是基於Servlet API的對象

利用Python如何實現數據驅動的介面自動化測

這裡考慮把API、參數、以及預期結果預行在格式化的CSV里保存,利用csv組件從CSV里讀取URL、參數以及預期結果,Requests組件發起請求,將響應結果與預期結果進行比對,最後把比對結果寫到結果CSV。

如何創建 python+requests介面自動化測試框架

工作原理: 測試用例在excel上編輯,使用第三方庫xlrd,讀取表格sheet和內容,sheetName對應模塊名,Jenkins集成服務發現服務moduleName查找對應表單,運用第三方庫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 open_excel(path):

“””打開excel”””

global workbook

if (workbook == None):

workbook = xlrd.open_workbook(path, on_demand=True)

def get_sheet(sheetName):

“””獲取行號”””

global workbook

return workbook.sheet_by_name(sheetName)

def get_rows(sheet):

“””獲取行號”””

return sheet.nrows

def get_content(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 api_test(method, url, data ,headers):

“””

定義一個請求介面的方法和需要的參數

:Args:

method – 企業名稱 str

url – 用戶昵稱 str

data – 參數 str

headers – 請求頭信息 dict

非RESTful API請求另外的請求類型實際用不到。也不安全。

“””

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 run_test(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.get_excel_sheet(path + “/” + common.filename, module)

“””3.數據準備”””

logging.info(“————– Prepare data through MysqlDB ————–“)

sql = common.get_prepare_sql(sheet)

common.prepare_data(host=host, user=user, password=password, db=db, sql=sql)

“””4.執行測試用例”””

res = common.run(sheet, url)

logging.info(“————– Get the result ———— %s”, res)

“””這裡的res是我們平滑升級的時候需要返回結果為TRUE才會繼續下面走。”””

六、查看測試報告(部署到jenkins會通過控制台查看)

怎麼基於python實現介面自動化

若是WEB-UI,或許可以考慮使用 splinter 或直接使用 selenium 而假如是WIN-UI,那麼就通過獲取目標句柄後設置相應數據;或者直接模擬系統的鍵盤輸入。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/257472.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-15 12:45
下一篇 2024-12-15 12:45

相關推薦

  • 如何查看Anaconda中Python路徑

    對Anaconda中Python路徑即conda環境的查看進行詳細的闡述。 一、使用命令行查看 1、在Windows系統中,可以使用命令提示符(cmd)或者Anaconda Pro…

    編程 2025-04-29
  • Python周杰倫代碼用法介紹

    本文將從多個方面對Python周杰倫代碼進行詳細的闡述。 一、代碼介紹 from urllib.request import urlopen from bs4 import Bea…

    編程 2025-04-29
  • Python列表中負數的個數

    Python列表是一個有序的集合,可以存儲多個不同類型的元素。而負數是指小於0的整數。在Python列表中,我們想要找到負數的個數,可以通過以下幾個方面進行實現。 一、使用循環遍歷…

    編程 2025-04-29
  • Python中引入上一級目錄中函數

    Python中經常需要調用其他文件夾中的模塊或函數,其中一個常見的操作是引入上一級目錄中的函數。在此,我們將從多個角度詳細解釋如何在Python中引入上一級目錄的函數。 一、加入環…

    編程 2025-04-29
  • Python計算陽曆日期對應周幾

    本文介紹如何通過Python計算任意陽曆日期對應周幾。 一、獲取日期 獲取日期可以通過Python內置的模塊datetime實現,示例代碼如下: from datetime imp…

    編程 2025-04-29
  • Python程序需要編譯才能執行

    Python 被廣泛應用於數據分析、人工智慧、科學計算等領域,它的靈活性和簡單易學的性質使得越來越多的人喜歡使用 Python 進行編程。然而,在 Python 中程序執行的方式不…

    編程 2025-04-29
  • 蝴蝶優化演算法Python版

    蝴蝶優化演算法是一種基於仿生學的優化演算法,模仿自然界中的蝴蝶進行搜索。它可以應用於多個領域的優化問題,包括數學優化、工程問題、機器學習等。本文將從多個方面對蝴蝶優化演算法Python版…

    編程 2025-04-29
  • Python字典去重複工具

    使用Python語言編寫字典去重複工具,可幫助用戶快速去重複。 一、字典去重複工具的需求 在使用Python編寫程序時,我們經常需要處理數據文件,其中包含了大量的重複數據。為了方便…

    編程 2025-04-29
  • Python清華鏡像下載

    Python清華鏡像是一個高質量的Python開發資源鏡像站,提供了Python及其相關的開發工具、框架和文檔的下載服務。本文將從以下幾個方面對Python清華鏡像下載進行詳細的闡…

    編程 2025-04-29
  • python強行終止程序快捷鍵

    本文將從多個方面對python強行終止程序快捷鍵進行詳細闡述,並提供相應代碼示例。 一、Ctrl+C快捷鍵 Ctrl+C快捷鍵是在終端中經常用來強行終止運行的程序。當你在終端中運行…

    編程 2025-04-29

發表回復

登錄後才能評論