版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、性能測(cè)試SDK使用手冊(cè)性能測(cè)試/SDK使用手冊(cè)性能測(cè)試/SDK使用手冊(cè) PAGE 18 PAGE 18SDK使用手冊(cè)返回性能測(cè)試控制臺(tái)包: PTSPTS包封裝了大部分用于編寫HTTP手工測(cè)試腳本的類和API,類主要有:Framework、Context、Data、Thread、Logger和HttpUtilities這六個(gè)。類: FrameworkFramework類主要用于測(cè)試引擎對(duì)腳本框架進(jìn)行內(nèi)部處理,使用戶可以通過(guò)API對(duì)腳本中的函數(shù)進(jìn)行性能計(jì)數(shù)(instrument),也提供了對(duì)HTTP返回碼和響應(yīng)處理時(shí)間分布的處理函數(shù)。一般用戶無(wú)需自己使用這個(gè)類的 方法進(jìn)行操作。通過(guò)錄制或者模版生成
2、的腳本會(huì)自動(dòng)加入Framework代碼,只有用戶完全手工編寫腳本時(shí)才會(huì) 用到Framework內(nèi)的方法。方法:instrumentMethod定義:definstrumentMethod(tran_namemethod_namecc這個(gè)類(在性能測(cè)試腳本中固化為TestRunner這個(gè)類)的method_name方法進(jìn)行編織,產(chǎn)生一個(gè)性能事務(wù),對(duì)應(yīng)性能測(cè)試平臺(tái)上的事務(wù)名 稱為tran_name, 這樣在腳本執(zhí)行時(shí)會(huì)自動(dòng)在method_name方法執(zhí)行前后加上時(shí)間戳,可以計(jì)算該方法的u事務(wù)名是性能測(cè)試頁(yè)面顯示的事務(wù)名,中文字符串前需要加u,viewPage1是PTS.Framework.inst
3、rumentMethod (u事務(wù)名, viewPage1, TestRunner)TestRunner中定義的一 個(gè)成員方法。PTS.Framework.instrumentMethod (u事務(wù)名, viewPage1, TestRunner)方法:addHttpCode定義:def addHttpCode(code, codeArray)對(duì)腳本中HTTP請(qǐng)求返回的狀態(tài)碼進(jìn)行累加計(jì)數(shù),code是當(dāng)前需要累加的狀態(tài)碼。codeArray是長(zhǎng)度為4的int數(shù) 組,codeArray0表示狀態(tài)碼小于300的個(gè)數(shù),codeArray1表示狀態(tài)碼在300,400)區(qū)間的個(gè)數(shù),codeArray2表示
4、狀態(tài)碼在400, 500)區(qū)間的個(gè)數(shù),codeArray3表示狀態(tài)碼在500及以上的個(gè)數(shù)。statusCode = 0L, 0L, 0L, 0L示例:statusCode = 0L, 0L, 0L, 0Lheadersheaders=NVPair(Accept,*/*),NVPair(Connection,Keep-Alive),NVPair(User-Agent,PTS-HTTP-CLIENT), result = HYPERLINK /item.htm?spm=a217i_h.1303267.1998177633- HTTPRequest().GET(/item.htm?spm=a217i
5、_h.1303267.1998177633- 0.10.hx5m95&id=12817144777, None,headers)PTS.Framework.addHttpCode(result.getStatusCode(), statusCode)方法:setExtraData定義:def setExtraData(codeArray=None)statusCode = self.action3() PTS.Framework.setExtraData(statusCode) statusCode = self.action4() statusCode = self.action3() PT
6、S.Framework.setExtraData(statusCode) statusCode = self.action4() PTS.Framework.setExtraData(statusCode)類:Context方法:getThreadContext定義:def getThreadContext()# 獲取線程上下文中的Cookie信息self.threadContext = PTS.Context.getThreadContext() self.init_cookies = CookieModule.listAllCookies(self.threadContext)# 獲取線程
7、上下文中的Cookie信息self.threadContext = PTS.Context.getThreadContext() self.init_cookies = CookieModule.listAllCookies(self.threadContext)# 往線程上下文中加入Cookie信息self.threadContext = PTS.Context.getThreadContext() CookieModule.addCookie(c, self.threadContext)方法:setParamDirectory定義:def setParamDirectory(dir)測(cè)試腳
8、本設(shè)置參數(shù)文件目錄,通常情況不需要使用,默認(rèn)為腳本目錄下的data目錄。如果用戶有自定義的參數(shù) 文件路徑,可以通過(guò)該方法進(jìn)行設(shè)置。類:Data開關(guān)值:delayReports專有網(wǎng)絡(luò) VPC/SDK使用手冊(cè)專有網(wǎng)絡(luò) VPC/SDK使用手冊(cè)定義:,1表示將數(shù)據(jù)收集延遲匯報(bào),通常我們需要在腳本中 根據(jù)請(qǐng)求返回內(nèi)容對(duì)事務(wù)是否成功進(jìn)行判斷,所以需要將該開關(guān)設(shè)置為1。# 延遲匯報(bào)數(shù)據(jù)PTS.Data.delayReports = 1# 事務(wù)調(diào)用# 延遲匯報(bào)數(shù)據(jù)PTS.Data.delayReports = 1# 事務(wù)調(diào)用# 匯報(bào)數(shù)據(jù)PTS.Data.report()# 關(guān)閉延遲回報(bào)數(shù)據(jù)PTS.Data.
9、delayReports = 0開 關(guān) 值 :forCurrentTest.success 定 義 : True表示事務(wù)成功,F(xiàn)alse表示事務(wù)失敗。 示例:if(not PTS.HttpUtilities.checkResponse(200,300, test): PTS.Data.forCurrentTest.success = False如果HTTP請(qǐng)求返回碼不是200或者300,或者返回內(nèi)容中不存在test字符串,就將當(dāng)前事務(wù)標(biāo)記為失敗,事務(wù) if(not PTS.HttpUtilities.checkResponse(200,300, test): PTS.Data.forCurre
10、ntTest.success = False類:Thread方法:sleep定義:def sleep(millis)# 線程睡眠1秒PTS.Thread.sleep(1000)當(dāng)前調(diào)用方法的線程進(jìn)入睡眠狀態(tài),millis毫秒。# 線程睡眠1秒PTS.Thread.sleep(1000)方法:getThreadNumber定義:def getThreadNumber()返回當(dāng)前調(diào)用線程的線程號(hào),注意該線程號(hào)是當(dāng)前施壓進(jìn)程啟動(dòng)線程的邏輯線程號(hào),從0開始往上遞增,不代表實(shí)際操作系統(tǒng)的線程號(hào)。方法:getRunNumber定 義 :def getRunNumber() 返回當(dāng)前調(diào)用線程的迭代次數(shù)。類:
11、Logger定義:腳本日志類,所有的輸出請(qǐng)使用Logger類進(jìn)行,Logger可以輸出級(jí)別為INFO、WARN、ERROR的三種日志。INFO包含WARN包含ERROR。根據(jù)用戶在性能測(cè)試場(chǎng)景里設(shè)置的日志級(jí)別,用戶可以看到不同的日志,比如 用戶在場(chǎng)景設(shè)置了INFO,則可以看到通過(guò)所有三種級(jí)別方法打印出的日志,如果設(shè)置為WARN,則只能看到通 過(guò)warn和error方法打出的日志,如果設(shè)置成ERROR,則只能看到通過(guò)error方法打出的日志。建議用戶在調(diào)試 階段可以將日志級(jí)別設(shè)為INFO,正式壓測(cè)時(shí)設(shè)成WARN或者ERROR。# 打印INFO級(jí)別的日志PTS.L(uINFO級(jí)別的日志)# 打印I
12、NFO級(jí)別的日志PTS.L(uINFO級(jí)別的日志)# 打印WARN級(jí)別的日志PTS.Logger.warn(uWARN級(jí)別的日志)# 打印ERROR級(jí)別的日志PTS.Logger.error(uERROR級(jí)別的日志)類:HttpUtilities方法:setKeepAlive定義:def setKeepAlive(flag)# 強(qiáng)制HTTP客戶端引擎使用短連接,每次循環(huán)之后關(guān)閉連接PTS.HttpUtilities.setKeepAlive(False)設(shè)置底層HTTP客戶端引擎在發(fā)送請(qǐng)求時(shí)使用長(zhǎng)連接還是短連接,默認(rèn)使用長(zhǎng)連接,flag為True或者False。 # 強(qiáng)制HTTP客戶端引擎使用
13、短連接,每次循環(huán)之后關(guān)閉連接PTS.HttpUtilities.setKeepAlive(False)方法:setUrlEncoding定義:def setUrlEncoding(code)設(shè)置底層HTTP客戶端引擎在發(fā)送請(qǐng)求時(shí)使用的URL編碼方式,默認(rèn)使用GBK編碼。如果用戶的URL已經(jīng)經(jīng)過(guò)URL編碼,則修改設(shè)置無(wú)效。# 使用UTF-8來(lái)進(jìn)行URL編碼PTS.HttpUtilities.setUrlEncoding(UTF-8)# 使用UTF-8來(lái)進(jìn)行URL編碼PTS.HttpUtilities.setUrlEncoding(UTF-8)法:setTimeout定義:def setTimeo
14、ut(time)# 設(shè)置超時(shí)時(shí)間120000毫秒PTS.HttpUtilities. setTimeout (120000)設(shè)置底層HTTP客戶端引擎控制HTTP請(qǐng)求的Connection和reading Response超時(shí)時(shí)間,時(shí)間單位為毫秒。示例:# 設(shè)置超時(shí)時(shí)間120000毫秒PTS.HttpUtilities. setTimeout (120000)方法:setFollowRedirects定義:def setFollowRedirects(flag)設(shè)置底層HTTP客戶端引擎針對(duì)類似302這樣的跳轉(zhuǎn)響應(yīng)的處理方式。如果設(shè)置成True,則引擎會(huì)自動(dòng)跟隨跳轉(zhuǎn) 內(nèi)容進(jìn)行繼續(xù)請(qǐng)求,否則不再
15、跟隨。按照模板編寫和手工編寫引擎默認(rèn)為True,錄制下來(lái)的腳本引擎默認(rèn)為# 跟隨跳轉(zhuǎn)請(qǐng)求PTS.HttpUtilities.setFollowRedirects(True)# 跟隨跳轉(zhuǎn)請(qǐng)求PTS.HttpUtilities.setFollowRedirects(True)方法:valueFromCookie定義:def valueFromCookie(cookieName, threadContext=None)獲取Cookie管理器中cookieName對(duì)應(yīng)的值,當(dāng)HTTP響應(yīng)返回使用SET-COOKIE來(lái)設(shè)置Cookie時(shí),這些Cookie會(huì)自動(dòng)存儲(chǔ)到Cookie管理器。# 獲取Cooki
16、e管理器中名字為JSESSIONID的Cookie值PTS.HttpUtilities.valueFromCookie(JESSIONID)# 獲取Cookie管理器中名字為JSESSIONID的Cookie值PTS.HttpUtilities.valueFromCookie(JESSIONID)# 獲取Cookie管理器中名字為JSESSIONID的Cookie值(僅在當(dāng)前線程中查找) PTS.HttpUtilities.valueFromCookie(JESSIONID, self.threadContext)ACE/SDK參考手冊(cè)ACE/SDK參考手冊(cè)方法:valueFromHeader
17、定義:def valueFromHeader(header)# 獲取HTTP響應(yīng)中Header名為L(zhǎng)ocation的值PTS.HttpUtilities.valueFromHeader(Location)獲取HTTP響應(yīng)中Header名為header的值。# 獲取HTTP響應(yīng)中Header名為L(zhǎng)ocation的值PTS.HttpUtilities.valueFromHeader(Location)方法:valueFromBodyInput定義:def valueFromBodyInput(tokenName)# 獲取HTTP響應(yīng)表單中input名稱為username的控件值PTS.HttpUt
18、ilities.valueFromBodyInput(username)獲取HTTP響應(yīng)中標(biāo)簽名tokenName的input的值。# 獲取HTTP響應(yīng)表單中input名稱為username的控件值PTS.HttpUtilities.valueFromBodyInput(username)方法:valueFromHiddenInput定義:def valueFromHiddenInput(tokenName)獲取HTTP響應(yīng)中標(biāo)簽名為tokenName的隱藏控件的值方法:valueFromTextBetween定義:def valueFromTextBetween(text, left, ri
19、ght)獲取text中被left和right字符串包圍的中間字符串,如果有多個(gè)匹配則返回第一個(gè)。示例:# 返回KDJAKPTS.HttpUtilities.valueFromTextBetween(text, tb_token;, ;) KDJAK # 返回KDJAKPTS.HttpUtilities.valueFromTextBetween(text, tb_token;, ;)方法:valuesFromTextBetween定義:def valuesFromTextBetween(text, left, right)日志服務(wù)/常見問(wèn)題日志服務(wù)/常見問(wèn)題功能和valueFromTextBet
20、ween類似,返回被left和right包圍的字符串列表。示例:PTS.HttpUtilities.valuesFromTextBetween(text, name=, )carname=VW/carname=BMW/carname=BENZ/ 比如上面這段xml代碼,調(diào)用下面這個(gè)方法會(huì)返回:VW,BMWBENZPTS.HttpUtilities.valuesFromTextBetween(text, name=, )方法:valueFromBodyBetween定義:def valueFromBodyBetween(left,right)獲取HTTP響應(yīng)中被left和right字符串包圍的中
21、間字符串,如果有多個(gè)匹配則返回第一個(gè)。 示例:# 返回KDJAKPTS.HttpUtilities.valueFromBodyBetween(tb_token;, ;) KDJAK # 返回KDJAKPTS.HttpUtilities.valueFromBodyBetween(tb_token;, ;)方法:valuesFromBodyBetween定義:def valuesFromBodyBetween(left, right)功能和valueFromBodyBetween類似,返回被left和right包圍的字符串列表。示例:PTS.HttpUtilities.valuesFromBody
22、Between(name=, )carname=VW/carname=BMW/carname=BENZ/ 比如上面這段xml代碼,調(diào)用下面這個(gè)方法會(huì)返回:VW,BMWBENZPTS.HttpUtilities.valuesFromBodyBetween(name=, )方法:setProxyServer定義:def setProxyServer(ip, port)PTS.HttpUtilities.setProxyServer(localhost, 8888)設(shè)置底層HTTP引擎使用IP為ip,端口為port的代理進(jìn)行請(qǐng)求。示例:PTS.HttpUtilities.setProxyServer
23、(localhost, 8888)方法:setUseCookieModule定義:def setUseCookieModule(flag)設(shè)置腳本中是否使用CookieModule來(lái)進(jìn)行cookie管理,默認(rèn)使用。如果用戶想在HTTP的header里自己設(shè)置Cookie,則需要通過(guò)調(diào)用這個(gè)方法來(lái)將CookieModule禁用。PTS.HttpUtilities.setUseCookieModule(False)示例:PTS.HttpUtilities.setUseCookieModule(False)方法:checkResponse定義:def checkResponse(code, expe
24、ctedText=None)對(duì)HTTP響應(yīng)進(jìn)行腳本,返回碼是否為code,響應(yīng)body里面是否包含expectedText。只有當(dāng)返回碼符合且expectedText存在時(shí)返回True。當(dāng)expectedText為None時(shí)(可以不傳入該參數(shù)),不進(jìn)行文本校驗(yàn)。# 當(dāng)響應(yīng)返回碼為200,且返回body包含test則返回True PTS.HttpUtilities.checkResponse(200, test)# 當(dāng)響應(yīng)返回碼為200,且返回body包含test則返回True PTS.HttpUtilities.checkResponse(200, test)方法:checkResponseB
25、yRegex定義:def checkResponseByRegex(code, expectedPattern=None)對(duì)HTTP響應(yīng)進(jìn)行腳本,返回碼是否為code,響應(yīng)body里面是否包含expectedPattern這樣的正則字符串。只 有當(dāng)返回碼符合且expectedPattern能夠匹配時(shí),返回True。當(dāng)expectedPattern為None時(shí)(可以不傳入該參 數(shù)),不進(jìn)行文本校驗(yàn)。# 當(dāng)響應(yīng)返回碼為200,且返回body包含IP地址則返回TruePTS.HttpUtilities.checkResponseByRegex(200, (0-9|1-90-9|10-92|20-40
26、-9|250-5).)3(0-9|1-90- # 當(dāng)響應(yīng)返回碼為200,且返回body包含IP地址則返回TruePTS.HttpUtilities.checkResponseByRegex(200, (0-9|1-90-9|10-92|20-40-9|250-5).)3(0-9|1-90- 9|10-92|20-40-9|250-5)$)類:DsvReader定義:參數(shù)化文件讀取操作類。方法:DsvReader定義:public DsvReader(fileName)DsvReader類構(gòu)造函數(shù),初始化類成員變量類:ParamManager定義:參數(shù)化功能管理類,提供對(duì)用戶上傳的參數(shù)文件進(jìn)行管
27、理。方法:getInstance定義:publicstaticParamManagergetInstance() 返回參數(shù)化功能管理類靜態(tài)實(shí)例對(duì)象。示例:params = ParamManager.getInstance()一般情況下,下列代碼放在全局位置,既class TestRunner上面params = ParamManager.getInstance()方法:addProvider定 義 :public void addProvider(ParamProvider_Instance) 添加參數(shù)讀操作類實(shí)例對(duì)象。示例:params.addProvider(DsvReader(umail
28、addr.csv)一般情況下,下列代碼放在全局位置,既class TestRunner上面添加mailaddr.csv文件讀取操作實(shí)例對(duì)象params.addProvider(DsvReader(umailaddr.csv)方法:nextRecord定義:publicbooleannextRecord(paramFileName) publicbooleannextRecord(paramFileName,bCircle) 根據(jù)參數(shù)文件名加載當(dāng)前參數(shù)位置的下一個(gè)位置的參數(shù)值示例:一般情況下,下列代碼放在全局位置,既class TestRunner上面添加mailaddr.csv文件讀取操作實(shí)例
29、對(duì)象負(fù)載均衡/常見問(wèn)題負(fù)載均衡/常見問(wèn)題params = ParamManager.getInstance() params = ParamManager.getInstance() params.addProvider(DsvReader(umailaddr.csv)一般情況下,下列代碼放在 class TestRunner 成員函數(shù)里面,例如action里面params.nextRecord(umailaddr.csv)加載mailaddr.csv下一個(gè)位置的參數(shù)值,參數(shù)值循環(huán),如果已到最后一個(gè)值,會(huì)繼續(xù)取第一個(gè)值params.nextRecord(umailaddr.csv)加載mail
30、addr.csv下一個(gè)位置的參數(shù)值,參數(shù)值不循環(huán),如果已到最后一個(gè)值,此函數(shù)值返回Falseif (not params.nextRecord(umailaddr.csv, False): raise ShutdownException(param file EOF)參數(shù)化數(shù)據(jù)用完后,要想腳本停止運(yùn)行請(qǐng)?zhí)砑酉铝写a(需要導(dǎo)入:from HTTPClient import ShutdownException):if (not params.nextRecord(umailaddr.csv, False): raise ShutdownException(param file EOF)方法:get
31、ParamValue定 義 :public String getParamValue(paramName) 根據(jù)參數(shù)化文件和參數(shù)名取當(dāng)前位置的參數(shù)值。示例:params. getParamValue (umailaddr.csv:sendmail_addr)讀取mailaddr.csv參數(shù)文件的sendmail_addr字段當(dāng)前位置的值params. getParamValue (umailaddr.csv:sendmail_addr)附錄一:HTTP示例腳本#! /usr/bin/env python#! /usr/bin/env python# -*- coding: utf-8 -*-#
32、 PTS Script Version 1.0# PTS腳本SDK:框架API、常用HTTP請(qǐng)求/響應(yīng)處理API from util import PTSfrom HTTPClient import NVPair from HTTPClient import Cookiefrom HTTPClient import HTTPRequest from HTTPClient import CookieModule# 腳本初始化段,可以設(shè)置壓測(cè)引擎的常用HTTP屬性#PTS.HttpUtilities.setKeepAlive(False)#PTS.HttpUtilities.setUrlEncod
33、ing(GBK)#PTS.HttpUtilities.setFollowRedirects(False)#PTS.HttpUtilities.setUseCookieModule(False)# 腳本執(zhí)行單元類,每個(gè)VU/壓測(cè)線程會(huì)創(chuàng)建一個(gè)TestRunner實(shí)例對(duì)象class TestRunner:# TestRunner對(duì)象的初始化方法,每個(gè)線程在創(chuàng)建TestRunner后執(zhí)行一次該方法def init (self):self.threadContext = PTS.Context.getThreadContext()self.action1() self.action2()self.in
34、it_cookies = CookieModule.listAllCookies(self.threadContext)# 主體壓測(cè)方法,每個(gè)線程在測(cè)試生命周期內(nèi)會(huì)循環(huán)調(diào)用該方法def call (self):PTS.Data.delayReports = 1for c in self.init_cookies: CookieModule.addCookie(c, self.threadContext)statusCode = self.action3() PTS.Framework.setExtraData(statusCode)statusCode = self.action4() PTS
35、.Framework.setExtraData(statusCode)PTS.Data.report() PTS.Data.delayReports = 0# TestRunner銷毀方法,每個(gè)線程循環(huán)執(zhí)行完成后執(zhí)行一次該方法def del (self):for c in self.init_cookies: CookieModule.addCookie(c, self.threadContext)self.action5() self.action6()# 定義請(qǐng)求函數(shù)def action1(self):headers = NVPair(Accept, */*), NVPair(Connec
36、tion, Keep-Alive), NVPair(User-Agent, PTS-HTTP-CLIENT),result = HTTPRequest().GET(, None, headers)headers=NVPair(Accept,*/*),NVPair(Connection,Keep-Alive),NVPair(Content-Type,application/x- www-form-urlencoded),NVPair(Host,),NVPair(User-Agent,PTS-HTTP-CLIENT),result = HYPERLINK /s%27 HTTPRequest().P
37、OST(/s, wd=test, headers)def action2(self):headers = NVPair(Accept, */*), NVPair(Connection, Keep-Alive), NVPair(User-Agent, PTS-HTTP-CLIENT),result = HYPERLINK /s?wd=test%27 HTTPRequest().GET(/s?wd=test, None, headers)headers=NVPair(Accept,*/*),NVPair(Connection,Keep-Alive),NVPair(Content-Type,appl
38、ication/x- www-form-urlencoded),NVPair(Host,),NVPair(User-Agent,PTS-HTTP-CLIENT),result = HYPERLINK /s%27 HTTPRequest().POST(/s, wd=test, headers)def action3(self):statusCode = 0L, 0L, 0L, 0Lheaders = NVPair(Accept, */*), NVPair(Connection, Keep-Alive), NVPair(User-Agent, PTS-HTTP-CLIENT),result = H
39、YPERLINK /item.htm?spm=a217i_h.1303267.1998177633- HTTPRequest().GET(/item.htm?spm=a217i_h.1303267.1998177633-0.10.hx5m95&id=12817144777, None, headers) PTS.Framework.addHttpCode(result.getStatusCode(), statusCode)headers=NVPair(Accept,*/*),NVPair(Connection,Keep-Alive),NVPair(Content-Type,applicati
40、on/x- www-form-urlencoded),NVPair(Host,),NVPair(User-Agent,PTS-HTTP-CLIENT),result= HYPERLINK /s%27 HTTPRequest().POST(/s,wd=test,headers) PTS.Framework.addHttpCode(result.getStatusCode(),statusCode)if(not PTS.HttpUtilities.checkResponse(200):PTS.Data.forCurrentTest.success = Falsereturn statusCode
41、def action4(self):statusCode = 0L, 0L, 0L, 0Lheaders = NVPair(Accept, */*), NVPair(Connection, Keep-Alive), NVPair(User-Agent, PTS-HTTP-CLIENT),result = HYPERLINK /item.htm?spm=a217i_h.1303267.1998177633- HTTPRequest().GET(/item.htm?spm=a217i_h.1303267.1998177633-0.10.hx5m95&id=12817144777, None, he
42、aders) PTS.Framework.addHttpCode(result.getStatusCode(), statusCode)headers=NVPair(Accept,*/*),NVPair(Connection,Keep-Alive),NVPair(Content-Type,application/x- www-form-urlencoded),NVPair(Host,),NVPair(User-Agent,PTS-HTTP-CLIENT),result= HYPERLINK /s?wd=test%27 HTTPRequest().GET(/s?wd=test,None,head
43、ers) PTS.Framework.addHttpCode(result.getStatusCode(),statusCode)if(not PTS.HttpUtilities.checkResponse(200):PTS.Data.forCurrentTest.success = Falsereturn statusCodedef action5(self):headers = NVPair(Accept, */*), NVPair(Connection, Keep-Alive), NVPair(User-Agent, PTS-HTTP-CLIENT),result = HYPERLINK
44、 /s?wd-test%27 HTTPRequest().GET(/s?wd-test, None, headers)headers=NVPair(Accept,*/*),NVPair(Connection,Keep-Alive),NVPair(Content-Type,application/x- www-form-urlencoded),NVPair(Host,),NVPair(User-Agent,PTS-HTTP-CLIENT),result = HYPERLINK /s%27 HTTPRequest().POST(/s, wd=test, headers)def action6(se
45、lf):def action6(self):headers = NVPair(Accept, */*), NVPair(Connection, Keep-Alive), NVPair(User-Agent, PTS-HTTP-CLIENT),result = HTTPRequest().GET(, None, headers)headers=NVPair(Accept,*/*),NVPair(Connection,Keep-Alive),NVPair(Content-Type,application/x- www-form-urlencoded),NVPair(Host,),NVPair(Us
46、er-Agent,PTS-HTTP-CLIENT),result = HYPERLINK /s%27 HTTPRequest().POST(/s, wd=test, headers)# 編織壓測(cè)事務(wù)PTS.Framework.instrumentMethod(u 事 務(wù) 1, action3, TestRunner) PTS.Framework.instrumentMethod(u事務(wù)2, action4, TestRunner)附錄二:TCP Socket示例腳本#! /usr/bin/env python#! /usr/bin/env python# -*- coding: utf-8 -
47、*-# PTS TCP Socket Script Template Version 1.0from util import PTS import socketclass TestRunner:# TestRunner對(duì)象的初始化方法,每個(gè)線程在創(chuàng)建TestRunner后執(zhí)行一次該方法def init (self):return# 主體壓測(cè)方法,每個(gè)線程在測(cè)試生命周期內(nèi)會(huì)循環(huán)調(diào)用該方法def call (self):PTS.Data.delayReports = 1statusCode = self.action1() PTS.Framework.setExtraData(statusCode
48、) PTS.Data.report()PTS.Data.delayReports = 0# TestRunner銷毀方法,每個(gè)線程循環(huán)執(zhí)行完成后執(zhí)行一次該方法def del (self):return# 業(yè)務(wù)函數(shù)def action1(self):statusCode = 0L, 0L, 0L, 0L#以下為socket協(xié)議腳本#創(chuàng)建TCP Socketsk = socket.socket(socket.AF_INET,socket.SOCK_STREAM)#連接到服務(wù)器,服務(wù)器IP及端口號(hào)sk.connect(localhost,2000)#將發(fā)送內(nèi)容送到服務(wù)器#將發(fā)送內(nèi)容送到服務(wù)器send
49、Content = This is tcp socket test,Status:success sk.send(sendContent);#接收服務(wù)器返回內(nèi)容RecvContent = sk.recv(1024)PTS.L(Content come from server is:+RecvContent)#關(guān)閉連接sk.close()#socket協(xié)議腳本結(jié)束#抓返回值value = PTS.HttpUtilities.valueFromTextBetween(RecvContent,Status:,)#判斷事務(wù)是否成功if not value:PTS.Data.forCurrentTest
50、.success = False PTS.L(Have no value)elif value.lower() = success: PTS.Data.forCurrentTest.success = True PTS.L(Success flag1:+value)else:PTS.Data.forCurrentTest.success = False PTS.L(Success flag2:+value)return statusCode# 編織壓測(cè)事務(wù)PTS.Framework.instrumentMethod(u事務(wù)名, action1, TestRunner)附錄三:UDP Socke
51、t示例腳本#! /usr/bin/env python#! /usr/bin/env python# -*- coding: utf-8 -*-# PTS UDP Socket Script Version 1.0from util import PTS import socketclass TestRunner:# TestRunner對(duì)象的初始化方法,每個(gè)線程在創(chuàng)建TestRunner后執(zhí)行一次該方法def init (self):return# 主體壓測(cè)方法,每個(gè)線程在測(cè)試生命周期內(nèi)會(huì)循環(huán)調(diào)用該方法def call (self):PTS.Data.delayReports = 1stat
52、usCode = self.action1() PTS.Framework.setExtraData(statusCode) PTS.Data.report()PTS.Data.delayReports = 0VPC/詞匯表VPC/詞匯表# TestRunner銷毀方法,每個(gè)線程循環(huán)執(zhí)行完成后執(zhí)行一次該方法def del (self):return# 業(yè)務(wù)函數(shù)def action1(self):statusCode = 0L, 0L, 0L, 0L#創(chuàng)建UDP Sockets = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)#設(shè)置服務(wù)器IP地址及端口號(hào)port = 20000host = localhost msg=0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 渣土購(gòu)買及環(huán)保處理服務(wù)2025年度合同3篇
- 二零二五年度荒料銷售與風(fēng)險(xiǎn)管理合同3篇
- 二零二五版房地產(chǎn)租賃合同增加補(bǔ)充協(xié)議范本3篇
- 二零二五年度餐飲公司環(huán)保設(shè)施投資合作合同范本3篇
- 二零二五版本二手房買賣合同含房屋相鄰權(quán)及公共設(shè)施使用協(xié)議2篇
- 二零二五版中小學(xué)教師派遣及教學(xué)資源整合合同3篇
- 二零二五年度文化產(chǎn)業(yè)園區(qū)場(chǎng)地使用權(quán)買賣合同范例3篇
- 基于2025年度的環(huán)保服務(wù)合同2篇
- 二零二五版企業(yè)股權(quán)激勵(lì)方案評(píng)估與優(yōu)化合同3篇
- 個(gè)人出版作品稿酬合同(2024版)3篇
- 高三課題研究報(bào)告范文
- 2024年初三數(shù)學(xué)競(jìng)賽考試試題
- 竇性心動(dòng)過(guò)速的危害
- 深基坑工程基坑土方開挖及支護(hù)降水施工方案
- 2024年江西生物科技職業(yè)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫(kù)帶解析答案
- 醫(yī)藥制造企業(yè)資本結(jié)構(gòu)優(yōu)化研究以貴州百靈為例
- GB 31335-2024鐵礦開采和選礦單位產(chǎn)品能源消耗限額
- 醫(yī)院高風(fēng)險(xiǎn)意外事件應(yīng)急措施和救護(hù)機(jī)制
- 橋本甲狀腺炎-90天治療方案
- 【復(fù)合附件版】個(gè)人借車免責(zé)協(xié)議書簡(jiǎn)單
- 焊接工裝夾具設(shè)計(jì)手冊(cè)
評(píng)論
0/150
提交評(píng)論