接口之用例編寫、驗證

一、用Excel編寫用例(xlsx格式)

截圖僅供參考,實際用例編寫需要根據實際情況來。

二、用例加載、驗證

?1、數據的加載

import xlrd,xlwt
#python操作excel主要用到xlrd和xlwt這兩個庫,即xlrd是讀excel,xlwt是寫excel的庫def datacel():try:filepath='.\\test_case\\jenkins_case.xlsx'file=xlrd.open_workbook(filepath)#打開excel文件工作簿me=file.sheets()[3]#指定到具體sheet4表nrows=me.nrows#讀行數#用例IDlistid=[]# 用例名稱listname = []# keylistkey = []#參數listcontent=[]#urllisturl=[]#請求方式listfangshi=[]#斷言 期望值listqiwang=[]for i in range(1,nrows):listid.append(me.cell(i,0).value)listname.append(me.cell(i, 1).value)listkey.append(me.cell(i,2).value)listcontent.append(me.cell(i,3).value)listurl.append(me.cell(i,4).value)listfangshi.append(me.cell(i,5).value)listqiwang.append(me.cell(i,6).value)return listid,listname,listkey,listcontent,listurl,listfangshi,listqiwangexcept:print("數據錯誤,請檢查表格")def makedata():listid, listname, listkey, listcontent, listurl, listfangshi, listqiwang=datacel()make_data=[]for i in range(len(listid)):make_data.append({'url':listurl[i],'key':listkey[i],'content':listcontent[i],'fangshi':listfangshi[i],'qiwang':listqiwang[i]})return make_dataif __name__ == '__main__':data_test = makedata()for i in range(len(data_test)):print(data_test[i])

2、數據使用

import unittest, requests
from ddt import ddt,data   #數據驅動
from unittest_excel.get_excel import makedata   #引用數據加載模塊

data_exce=makedata()        #變量=makedata()返回值 list,每個元素是字典、用例

@ddt
class TestStringMethods(unittest.TestCase):def setUp(self):print('+++')def tearDown(self):print('---')@data(*data_exce)def test_url(self,data_exce):print(data_exce['url'])print(data_exce['key'])print(data_exce['content'])print(data_exce['fangshi'])print(data_exce['qiwang'])@data(*data_exce)def test_request(self,data_exce):r=requests.post(url=data_exce['url'],json=data_exce['key'])print(data_exce['url'],r.status_code)if __name__ == '__main__':unittest.main()

?3、單個目標驗證

'''
這里暫時只比較了返回的value是否和預期一致的情況,沒有比較目標的鍵值都相同以及目標的層級
dict:待測目標
objkey:目標key
objvalue:目標value
'''
def dict_get(dict, objvalue, default):tmp = dictfor k,v in tmp.items():# 如果dict中的value和目標value相同,則返回value,這里也可以改成鍵值都相等if v == objvalue:return velse:if (type(v).__name__ == 'list'):#如果類型是list,且不為空if len(v)>=1:for i in range(0,(len(v))) :ret= dict_get(v[i], objvalue, default)#遞歸調用,如果不是返回default,則跳出遞歸if ret is not default:return retif (type(v).__name__ == 'dict'):#如果類型是dict,且不為空if len(v)>=1:for i in range(0,(len(v))) :ret = dict_get(v, objvalue, default)#遞歸調用,如果不是返回default,則跳出遞歸if ret is not default:return retreturn default#找不到時返回的默認值if __name__ == '__main__':test={"sites": [{ "name":"test" , "url":"www.test.com" },{ "name":"google" , "url":"www.google.com" },{ "name":"weibo" , "url":"www.weibo.com" }]}a=dict_get(test,"www.weibo.co",'未找到')print(a)

4、整個response驗證,這里是以單個目標驗證為基礎的方法

from Template_Log.log import LOG,logger
from unittest_t3.check_kv import   dict_get@logger('斷言測試結果,通過返回pass,失敗返回fail')
def assert_in(assert_hope,response):if len(assert_hope.split('=')) > 1:#目標示例: assert_hope:name=google&url=www.google.comdata = assert_hope.split('&')#分割后示例:[name=google,url=www.google.com]result = dict([(item.split('=')) for item in data])#分割后示例: {name:google,url:www.google.com}
value1=[]for value in result.values():s=dict_get(response, value, None)#期望的value和響應response對比,如果有相同就返回valueif (s != None):value1.append(s)else:return 'fail'print('斷言通過,斷言的實際值是:',value1)return  'pass'else:LOG.info('填寫測試預期值')raise ('請填寫期望值')

三、實例

import json,ddt
import unittest,requests
from Template_Log.log import LOG,logger#數據驅動
from unittest_t2.get_excel import makedata
from unittest_t3.check_all import assert_in
from unittest_t3.xmltojson import Xml2Json
data_exce=makedata()@ddt.ddt
class TestStringMethods(unittest.TestCase):def setUp(self):LOG.info("start_here")def tearDown(self):LOG.info("end_here")@logger('進入用例test_insert')@ddt.data(*data_exce)def test_insert(self,data_exce):r=requests.post(data_exce['url'],data=data_exce['key'])try:apijson = json.loads(r.text)except Exception:apijson = Xml2Json(r.text).resultprint('返回結果:', r.json())print('期望值:',data_exce['qiwang'])LOG.info('返回結果:%s'%apijson)qingwang=assert_in(data_exce['qiwang'],apijson)LOG.info('斷言結果:%s'%qingwang)self.assertEqual(qingwang,'pass',msg='預期和返回一致')if __name__ == '__main__':unittest.main()

?

轉載于:https://www.cnblogs.com/yinwenbin/p/10610986.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/394535.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/394535.shtml
英文地址,請注明出處:http://en.pswp.cn/news/394535.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

計算機二級word真題書娟,計算機二級word試題.docx

PAGEPAGE # / 80Word試題在考生文件夾下打開文檔 word.docx ,按照要求完成下列操作并以該文件名( word.docx )保存文檔。某高校為了使學生更好地進行職場定位和職業準備,提高就業能力,該校學工處將于2013 年 4月 29 日(星期五) 19:30-21:30 在…

農場js_通過銷售農場商品來解釋Web API

農場jsby Kevin Kononenko凱文科諾年科(Kevin Kononenko) 通過銷售農場商品來解釋Web API (Web APIs explained by selling goods from your farm) If you have been to a farmer’s market or farm stand, then you can understand the concept of an application programmin…

python安裝pyqt4_windows下安裝PyQt4

第一步:確認自己電腦上的Python版本。然后下載對應的.whl文件下載第二步:https://www.lfd.uci.edu/~gohlke/pythonlibs/#pyqt4上下載對應版本版本的.whl文件。例如cp-27-cp27m就代表是python2.7的版本。如果要下載python3.6且電腦是64位的則需要下載PyQt…

repcached配置與簡單測試

安裝libevent-devel進行configure。安裝在文件夾/usr/local/repcached下編譯安裝完畢啟動11211節點啟動11212節點編寫文件驗證復制(分別向1、2節點存入數據,驗證復制)ruby執行結果

為Activity設置特定權限才能啟動

1.在AndroidManifest文件中&#xff0c;聲明一個權限&#xff0c;并在activity中添加屬性 <!--聲明權限&#xff0c;權限名一般為包名permission類名 --><permission android:name"com.jikexueyuan.notepad.specpermission.permission.MyAty"/> <acti…

nashPay項目遇到的問題

瀏覽器提示錯誤代碼&#xff1a; Failed to load resource: net::ERR_CONNECTION_REFUSED 出現這個問題是core服務異常&#xff0c;重啟core服務可解決 layUi 下拉框賦值 var loadZhongduan function (data) { admin.req({ url: baseUrl "shoukuanZhongduan/getList&quo…

使用Express在Node.js中實現非常基本的路由

by Pau Pavn通過保羅帕文(PauPavn) 使用Express在Node.js中實現非常基本的路由 (Really, really basic routing in Node.js with Express) The goal of this story is to briefly explain how routing works in Express while building a simple — very simple — Node app.這…

計算機抄作通用模塊,通用命令行模塊的設計及實現

摘要&#xff1a;自從上個世紀八十年代以來,圖形用戶界面得到快速發展,計算機逐漸進入各類企業,家庭,其應用得到廣泛的推廣.對比起命令行界面來說,圖形界面在交互性上有著不可比擬的優勢.但在一些需要執行大量重復性工作的方面,例如在系統管理上,命令行界面提供的腳本功能,能夠…

python讀寫磁盤扇區數據_C++-如何直接讀取Windows磁盤扇區的數據?

1.通過CreateFile系列來完成讀寫扇區可以通過CreateFile打開磁盤邏輯分區&#xff0c;還要通過SetFilePointer以文件操作的方式把指針移到要操作的磁盤扇區開始處&#xff0c;在定位到要訪問的扇區開始位置后就可以通過ReadFile或WriteFile函數實施相應的讀寫訪問了&#xff0c…

公司 郵件 翻譯 培訓 長難句 結課

今天結課啦。。。。。。 明天培訓總結&#xff0c;講翻譯技巧總結。 1new forms of thoughts as well as new subjects for thought must arise in the future as they have in the past, giving rise to new standards of elegance. 2if the small hot spots look as expected…

元祖(轉載)

一.基本數據類型  整數&#xff1a;int  字符串&#xff1a;str(注&#xff1a;\t等于一個tab鍵)  布爾值&#xff1a; bool  列表&#xff1a;list   列表用[]  元祖&#xff1a;tuple  元祖用&#xff08;&#xff09;  字典&#xff1a;dict注&#xff1a;所…

leetcood學習筆記-226- 翻轉二叉樹

題目描述&#xff1a; 第一次提交&#xff1a; class Solution(object):def invertTree(self, root):""":type root: TreeNode:rtype: TreeNode"""if not root:return Nonetemp root.leftroot.left root.rightroot.right temp# root.left,…

現代JavaScript中的精美圖案:制冰廠

I’ve been working with JavaScript on and off since the late nineties. I didn’t really like it at first, but after the introduction of ES2015 (aka ES6), I began to appreciate JavaScript as an outstanding, dynamic programming language with enormous, expres…

惠普omen測試軟件,雙GTX1080奢華魔方PC 惠普OMEN X評測

惠普最近一段時間在游戲PC領域著力發力&#xff0c;桌面的暗影精靈家族熱賣&#xff0c;如火如荼的勢頭終于傳導到了臺式機領域。而今&#xff0c;惠普也終于有了自己正統意義上的重型武器——桌面游戲臺式機OMEN 900暗影精靈II 系列。今天我們就要為大家評測這款三萬元的臺式機…

python 清華鏡像_Anaconda3清華鏡像 V5.3.1 最新免費版

相關軟件軟件大小版本說明下載地址Anaconda3清華鏡像是一款功能強大的python管理工具&#xff0c;此軟件集成了Conda和Python等大量科學計算分析的包&#xff0c;可以幫助用戶快速實現項目環境的配置&#xff0c;有需要的趕快來試試吧&#xff01;【功能特點】1、省時省心&…

Qt第五課 無構造函數可以接受源類型,或構造函數重載決策不明確

場景QJsonArray rgParams { 10, 20, 30, 40 };編譯代碼的時候出錯&#xff0c;C11標準才支持這種類的初始化列表語法&#xff0c;因此如果當前VS的版本過低&#xff0c;必須調整已有的代碼&#xff0c;例子如下&#xff1a;QJsonArray rgParams;rgParams.insert(0, 10);rgPar…

二. linux基礎命令

linux的基本命令一般有100多個&#xff0c;多練就可以了&#xff1b; 如果登陸用戶是root&#xff0c;那么是#&#xff1b;如果是其他用戶&#xff0c;則顯示的是$ 練習&#xff1a;基本命令 1.創建一個目錄/data mkdir /data ls -ld /data 2.在/data下面創建一個文件oldboy.tx…

mac 沒有所有開發者_為什么開發人員應該像產品所有者那樣思考

mac 沒有所有開發者by Sajal Sarwar Sharma通過薩加爾薩瓦夏爾馬 為什么開發人員應該像產品所有者那樣思考 (Why developers should think more like product owners) You have just deployed your long-awaited feature to production after a long and gruesome month of co…

程序員這樣對待簡歷,你期望面試官怎么對待你?

為什么想到談這個問題呢&#xff1f; 前段時間公司因業務擴展需要招聘幾個研發、運維以及測試人員&#xff0c;在看面試者的簡歷時&#xff0c;發現很多人都沒有認真的去對待簡歷&#xff0c;只是把招聘網站上的打印一下就好了&#xff01; 這就讓我想問幾個問題&#xff1a; 1…

mfc try catch 捕獲并顯示_“全棧2019”Java異常第十七章:Error該不該被捕獲?

難度初級學習時間30分鐘適合人群零基礎開發語言Java開發環境JDK v11IntelliJ IDEA v2018.3友情提示本教學屬于系列教學&#xff0c;內容具有連貫性&#xff0c;本章使用到的內容之前教學中都有詳細講解。本章內容針對零基礎或基礎較差的同學比較友好&#xff0c;可能對于有基礎…