1. 程式人生 > >python 介面自動化測試--程式碼實現(八)

python 介面自動化測試--程式碼實現(八)

用例讀入資料庫:

#! /usr/bin/python
# coding:utf-8
import sys,os
from Engine import DataEngine

reload(sys)
sys.setdefaultencoding( "utf-8")
from Engine.XlsEngine import XlsEngine_rd
from Engine.SqlEngine import MSSQL
dir=os.getcwd() #檔案的絕對路徑
#用例檔案,casedir=[[xls檔名列表],[xls檔案路徑列表]]
casedir = DataEngine.getDateCase('.\DataSrc')

class ReadCase:
    def __init__(self,file):
        self.file=file


    def readCase(self):
        data = XlsEngine_rd(self.file)
        data.xlrd_open()
        sheets=data.xlrd_object.sheets()
        result_list=[]
        for index in range(len(sheets)):#遍歷excel檔案的sheets
            sheet = data.xlrd_object.sheet_by_index(index)
            rows = sheet.nrows
            sheet_list=[]
            for i in range(rows):
                sheet_list.append(sheet.row_values(i))
            result_list.append(sheet_list) #單個sheet中的內容列表併入到結果列表中
        return result_list

class caseToDb():
    def __init__(self,host,user,psw,dbname):
        self.host=host
        self.user=user
        self.psw=psw
        self.dbname=dbname
        self.con = MSSQL(self.host,self.user,self.psw,self.dbname)

    def InsertInterDefineSql(self,url,Descn,method,FlatType,ResultType):
        sql="INSERT INTO[dbo].[InterDefine]([Url],[Descn],[Method],[FlatType],[CreatDate],[EditDate],[VerSion],[IsRun],[ResultType])\
                 VALUES('%s','%s','%s',%d,GETDATE(),GETDATE(),1,'Y','%s')"%(url,Descn,method,FlatType,ResultType)
        self.con.ExecNonQuery(sql)

    def InsertDataCaseSql(self,InterfaceId,CaseId,AC,Data,IsRun,Expect):
        sql="INSERT INTO [dbo].[DataCase]([InterfaceId],[CaseId],[AC],[DataStr],[IsRun],[Expect],[CreatDate],[EditDate])\
                VALUES(%d,%d,'%s','%s','%s','%s',GETDATE(),GETDATE())"%(InterfaceId,CaseId,AC,Data,IsRun,Expect)
        self.con.ExecNonQuery(sql)

    def methodId(self,method):
        sql="SELECT Id FROM dbo.InterDefine WHERE Method = '%s'"%method
        Id=self.con.ExecQuery(sql)
        return Id
    def dataCaseId(self,caseId,interfaceid):
        sql="SELECT Id FROM dbo.Datacase WHERE caseId = %d and interfaceid = %d"%(caseId,interfaceid)
        Id=self.con.ExecQuery(sql)
        return Id

def run():
    a=caseToDb('192.168.1.2','release','release','tester')
    try:
        for xlsindex in range(0,len(casedir[1])):
            result_list = ReadCase(casedir[1][xlsindex]).readCase() #依次獲取用例檔案地址
            for i in range(len(result_list)):#len(result_list)為檔案中的sheet數量
                Descn = result_list[i][0][0]#獲取單個sheet中的介面描述
                URL = result_list[i][2][0]  #獲取單個sheet中的介面地址
                METHOD = result_list[i][2][1]#獲取單個sheet中的介面方法
                ArgAccount = int(result_list[i][2][2])#獲取介面的引數個數
                ResultType = result_list[i][2][3]#獲取介面的返回結果格式型別
                FlatType = result_list[i][2][4]#獲取介面所屬端
                if len(a.methodId(METHOD)) == 0:#如果介面定義表中無此方法,則插入介面定義引數
                    a.InsertInterDefineSql(URL,Descn,METHOD,FlatType,ResultType)
                for j in range(5,len(result_list[i])):
                    Data={}
                    CaseId=int(result_list[i][j][0])#獲取用例的id
                    Run=str(result_list[i][j][1])
                    Expect=str(result_list[i][j][2+ArgAccount])#獲取預期結果
                    InterfaceId = int(a.methodId(METHOD)[0][0])#查詢用例對應的介面在介面定義表中的ID
                    AC = result_list[i][j][3+ArgAccount]#單條介面用例的檢查點描述
                    if ArgAccount != 0:
                        for value_index in range(2,2+ArgAccount):
                            value = result_list[i][j][value_index]
                            if isinstance(value,(float,int)):
                                Data[result_list[i][4][value_index]]=int(value)#組成請求引數字典
                            else:
                                Data[result_list[i][4][value_index]]=str(value)#組成請求引數字典
                    else:
                        Data={}
                    Data=str(Data).replace("'",'"')
                    if len(a.dataCaseId(CaseId,InterfaceId)) == 0:#若用例表中無此用例ID和介面id,則插入
                        a.InsertDataCaseSql(InterfaceId,CaseId,AC,Data,Run,Expect)
    except Exception,e:
        print(e)

# if __name__ == '__main__':
#     run()


相關推薦

python 介面自動化測試--程式碼實現

用例讀入資料庫: #! /usr/bin/python # coding:utf-8 import sys,os from Engine import DataEngine reload(sys) sys.setdefaultencoding( "utf-8") fro

python 介面自動化測試--程式碼實現

資料庫還原指令碼: #! /usr/bin/python # coding:utf-8 import time from Engine.SqlEngine import MSSQL COUNT=1 def restoreRelease(): global COUNT

python UI自動化測試專案記錄 請求介面資料並提取資料

首先 獲取預期結果-介面響應資料,分成兩步: 1 獲取資料來源介面資料 2 提取後續頁面對比中要用到的資料 並且為了便於後續呼叫,將介面相關的都封裝到ProjectApi類中。隱去敏感資訊後的原始碼如下:   1 獲取資料來源介面資料 # coding:utf-8 import

ORB-SLAM2從理論到程式碼實現:Tracking.cc程式詳解

本人郵箱[email protected],歡迎交流! 接著講tracking.cc。  bool Tracking::NeedNewKeyFrame() 函式功能 判斷是否需要生成新的關鍵幀,確定關鍵幀的標準 步驟 1. 在上一次進行重

python介面自動化學習之路4

較上一個版本優化的內容為: 1.迴圈讀取excel裡的case 2.將響應結果寫入一個新的excel import requests import xlrd import json import xlutils import xlwt import time exce

SVN+Jmeter+Jenkins構建介面自動化測試框架方案

上一個沒寫完,本次繼續:解決問題的方法有3種;①暫時的:使用有許可權的使用者登入Jenkins,在“系統管理→指令碼命令列”中執行如下內容:(Jenkins重啟後需要重新執行該條命令)------System.setProperty("hudson.model.Directo

Python3+Selenium2完整的自動化測試框架實現自動化測試環境搭建

添加 在線安裝 自動化 eight str rain 中間 自動打開 發的 1 環境搭建準備 (1) 下載Python3版本的安裝包,直接官網下載即可:Python官網:https://www.python.org/ (2) 下載Python的基礎工具包

python介面自動化測試框架post提交新增變數

1、python介面測試框架包含哪幾部分 資料來源-> GET/POST 傳送請求->接收返回結果->斷言測試結果->生成測試報告(html報告)->網頁報告   2、python介面測試框架 config:存放配置檔案,比如資料庫設定、郵件配置、log配置

python 介面自動化測試

說完了SOAP協議的介面自動化 該說下http協議的介面測試了 HttpService.py import requests import sys reload(sys) sys.setdefaultencoding( "utf-8" ) class HttpServ

python介面自動化測試

本節開始,開始介紹python的介面自動化測試,首先需要搭建python開發環境,到https://www.python.org/下載python 版本直接安裝就以了,建議 下載python2.7.11版本,當然,也是可以下載python最新版本的。        介

python介面自動化測試()-unittest-生成測試報告

用例的管理問題解決了後,接下來要考慮的就是報告我問題了,這裡生成測試報告主要用到 HTMLTestRunner.py 這個模組,下面簡單介紹一下如何使用:一、下載HTMLTestRunner下載:這個模組不能通過pip安裝,只能下載安裝,下載地址如下:二、mac下配置:1、終端進入python環境2、輸入:i

Python介面自動化測試框架: pytest+allure+jsonpath+requests+excel實現介面自動化測試框架(學習成果)

[toc] # 廢話 最近在自己學習介面自動化測試,這裡也算是完成一個小的成果,歡迎大家交流指出不合適的地方,原始碼在文末 # 問題 整體程式碼結構優化未實現,導致最終測試時間變長,其他工具單介面測試只需要39ms,該框架中使用了101ms,考慮和頻繁讀寫用例資料導致 # 環境與依賴 | 名稱

船長帶你看書——《selenium2 python 自動化測試實戰》2瀏覽器操作

python lin div 看書 名稱 ext ice 微信公眾號 很難 瀏覽器操作 # coding: utf-8 from selenium import webdriver from time import sleep driver = webdriver.Fi

《selenium2 python 自動化測試實戰》5——鍵盤事件

display 技術 添加 lan data- vbs nbsp .cn images 鍵盤事件,就是鍵盤上的一些操作,比如Ctrl +C,Ctrl+V,Ctrl+X等。 對鍵盤的操作需要導入另一個鍵盤的庫: from selenium.webdriver.commo

《selenium2 python 自動化測試實戰》13——上傳文件

dml 實戰 文件的 -c pbm erl sel png flow 看代碼: # coding: utf-8 from selenium import webdriver from time import sleep driver = webdriver.Fir

《selenium2 python 自動化測試實戰》21——unittest單元測試框架解析

nbsp add pic post 二維碼 mage ron 而且 aaa unittest是展開自動化測試的基礎——這個框架很重要! 我們先自己寫一個測試類: 1、被測試類 Widthget.py: # coding: utf-8class Wi

《selenium2 python 自動化測試實戰》20——Selenium工具介紹

命令 aic 插件 rhui 所有 key 框架 地址欄 uga (一)Selenium IDE Firefox的一個插件,有助於我們理解測試框架。在附加組件裏搜索下載,一般搜的結果裏前幾個都不是,得點那個查看更多才行,找到這個: 安裝以後瀏覽器工具欄會有

Appium+python移動端自動化測試-環境搭建

過程 .com oid pytho 安裝環境 測試 ID alt ppi 搭建所在系統環境:Windows7版本64位系統 一、環境準備 jdk8.0.151 android-sdk_r20.3.4-windows python3.5 appium1.4.16

Java常用的種排序演算法與程式碼實現:桶排序、計數排序、基數排序

三種線性排序演算法:桶排序、計數排序、基數排序 線性排序演算法(Linear Sort):這些排序演算法的時間複雜度是線性的O(n),是非比較的排序演算法 桶排序(Bucket Sort)   將要排序的資料分到幾個有序的桶裡,每個桶裡的資料再單獨進行排序,桶內排完序之後,再把桶裡的

Java常用的種排序演算法與程式碼實現:歸併排序法、快速排序法

注:這裡給出的程式碼方案都是通過遞迴完成的 --- 歸併排序(Merge Sort):   分而治之,遞迴實現   如果需要排序一個數組,我們先把陣列從中間分成前後兩部分,然後對前後兩部分進行分別排序,再將排好序的數組合並在一起,這樣整個陣列就有序了   歸併排序是穩定的排序演算法,時間