日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

接口之用例编写、验证

發布時間:2023/11/29 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 接口之用例编写、验证 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、用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

總結

以上是生活随笔為你收集整理的接口之用例编写、验证的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。