阿里云-性能測試服務SDK手冊-D_第1頁
阿里云-性能測試服務SDK手冊-D_第2頁
阿里云-性能測試服務SDK手冊-D_第3頁
阿里云-性能測試服務SDK手冊-D_第4頁
阿里云-性能測試服務SDK手冊-D_第5頁
已閱讀5頁,還剩14頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、性能測試SDK使用手冊性能測試/SDK使用手冊性能測試/SDK使用手冊 PAGE 18 PAGE 18SDK使用手冊返回性能測試控制臺包: PTSPTS包封裝了大部分用于編寫HTTP手工測試腳本的類和API,類主要有:Framework、Context、Data、Thread、Logger和HttpUtilities這六個。類: FrameworkFramework類主要用于測試引擎對腳本框架進行內部處理,使用戶可以通過API對腳本中的函數進行性能計數(instrument),也提供了對HTTP返回碼和響應處理時間分布的處理函數。一般用戶無需自己使用這個類的 方法進行操作。通過錄制或者模版生成

2、的腳本會自動加入Framework代碼,只有用戶完全手工編寫腳本時才會 用到Framework內的方法。方法:instrumentMethod定義:definstrumentMethod(tran_namemethod_namecc這個類(在性能測試腳本中固化為TestRunner這個類)的method_name方法進行編織,產生一個性能事務,對應性能測試平臺上的事務名 稱為tran_name, 這樣在腳本執(zhí)行時會自動在method_name方法執(zhí)行前后加上時間戳,可以計算該方法的u事務名是性能測試頁面顯示的事務名,中文字符串前需要加u,viewPage1是PTS.Framework.inst

3、rumentMethod (u事務名, viewPage1, TestRunner)TestRunner中定義的一 個成員方法。PTS.Framework.instrumentMethod (u事務名, viewPage1, TestRunner)方法:addHttpCode定義:def addHttpCode(code, codeArray)對腳本中HTTP請求返回的狀態(tài)碼進行累加計數,code是當前需要累加的狀態(tài)碼。codeArray是長度為4的int數 組,codeArray0表示狀態(tài)碼小于300的個數,codeArray1表示狀態(tài)碼在300,400)區(qū)間的個數,codeArray2表示

4、狀態(tài)碼在400, 500)區(qū)間的個數,codeArray3表示狀態(tài)碼在500及以上的個數。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)測試腳

8、本設置參數文件目錄,通常情況不需要使用,默認為腳本目錄下的data目錄。如果用戶有自定義的參數 文件路徑,可以通過該方法進行設置。類:Data開關值:delayReports專有網絡 VPC/SDK使用手冊專有網絡 VPC/SDK使用手冊定義:,1表示將數據收集延遲匯報,通常我們需要在腳本中 根據請求返回內容對事務是否成功進行判斷,所以需要將該開關設置為1。# 延遲匯報數據PTS.Data.delayReports = 1# 事務調用# 延遲匯報數據PTS.Data.delayReports = 1# 事務調用# 匯報數據PTS.Data.report()# 關閉延遲回報數據PTS.Data.

9、delayReports = 0開 關 值 :forCurrentTest.success 定 義 : True表示事務成功,F(xiàn)alse表示事務失敗。 示例:if(not PTS.HttpUtilities.checkResponse(200,300, test): PTS.Data.forCurrentTest.success = False如果HTTP請求返回碼不是200或者300,或者返回內容中不存在test字符串,就將當前事務標記為失敗,事務 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)當前調用方法的線程進入睡眠狀態(tài),millis毫秒。# 線程睡眠1秒PTS.Thread.sleep(1000)方法:getThreadNumber定義:def getThreadNumber()返回當前調用線程的線程號,注意該線程號是當前施壓進程啟動線程的邏輯線程號,從0開始往上遞增,不代表實際操作系統(tǒng)的線程號。方法:getRunNumber定 義 :def getRunNumber() 返回當前調用線程的迭代次數。類:

11、Logger定義:腳本日志類,所有的輸出請使用Logger類進行,Logger可以輸出級別為INFO、WARN、ERROR的三種日志。INFO包含WARN包含ERROR。根據用戶在性能測試場景里設置的日志級別,用戶可以看到不同的日志,比如 用戶在場景設置了INFO,則可以看到通過所有三種級別方法打印出的日志,如果設置為WARN,則只能看到通 過warn和error方法打出的日志,如果設置成ERROR,則只能看到通過error方法打出的日志。建議用戶在調試 階段可以將日志級別設為INFO,正式壓測時設成WARN或者ERROR。# 打印INFO級別的日志PTS.L(uINFO級別的日志)# 打印I

12、NFO級別的日志PTS.L(uINFO級別的日志)# 打印WARN級別的日志PTS.Logger.warn(uWARN級別的日志)# 打印ERROR級別的日志PTS.Logger.error(uERROR級別的日志)類:HttpUtilities方法:setKeepAlive定義:def setKeepAlive(flag)# 強制HTTP客戶端引擎使用短連接,每次循環(huán)之后關閉連接PTS.HttpUtilities.setKeepAlive(False)設置底層HTTP客戶端引擎在發(fā)送請求時使用長連接還是短連接,默認使用長連接,flag為True或者False。 # 強制HTTP客戶端引擎使用

13、短連接,每次循環(huán)之后關閉連接PTS.HttpUtilities.setKeepAlive(False)方法:setUrlEncoding定義:def setUrlEncoding(code)設置底層HTTP客戶端引擎在發(fā)送請求時使用的URL編碼方式,默認使用GBK編碼。如果用戶的URL已經經過URL編碼,則修改設置無效。# 使用UTF-8來進行URL編碼PTS.HttpUtilities.setUrlEncoding(UTF-8)# 使用UTF-8來進行URL編碼PTS.HttpUtilities.setUrlEncoding(UTF-8)法:setTimeout定義:def setTimeo

14、ut(time)# 設置超時時間120000毫秒PTS.HttpUtilities. setTimeout (120000)設置底層HTTP客戶端引擎控制HTTP請求的Connection和reading Response超時時間,時間單位為毫秒。示例:# 設置超時時間120000毫秒PTS.HttpUtilities. setTimeout (120000)方法:setFollowRedirects定義:def setFollowRedirects(flag)設置底層HTTP客戶端引擎針對類似302這樣的跳轉響應的處理方式。如果設置成True,則引擎會自動跟隨跳轉 內容進行繼續(xù)請求,否則不再

15、跟隨。按照模板編寫和手工編寫引擎默認為True,錄制下來的腳本引擎默認為# 跟隨跳轉請求PTS.HttpUtilities.setFollowRedirects(True)# 跟隨跳轉請求PTS.HttpUtilities.setFollowRedirects(True)方法:valueFromCookie定義:def valueFromCookie(cookieName, threadContext=None)獲取Cookie管理器中cookieName對應的值,當HTTP響應返回使用SET-COOKIE來設置Cookie時,這些Cookie會自動存儲到Cookie管理器。# 獲取Cooki

16、e管理器中名字為JSESSIONID的Cookie值PTS.HttpUtilities.valueFromCookie(JESSIONID)# 獲取Cookie管理器中名字為JSESSIONID的Cookie值PTS.HttpUtilities.valueFromCookie(JESSIONID)# 獲取Cookie管理器中名字為JSESSIONID的Cookie值(僅在當前線程中查找) PTS.HttpUtilities.valueFromCookie(JESSIONID, self.threadContext)ACE/SDK參考手冊ACE/SDK參考手冊方法:valueFromHeader

17、定義:def valueFromHeader(header)# 獲取HTTP響應中Header名為Location的值PTS.HttpUtilities.valueFromHeader(Location)獲取HTTP響應中Header名為header的值。# 獲取HTTP響應中Header名為Location的值PTS.HttpUtilities.valueFromHeader(Location)方法:valueFromBodyInput定義:def valueFromBodyInput(tokenName)# 獲取HTTP響應表單中input名稱為username的控件值PTS.HttpUt

18、ilities.valueFromBodyInput(username)獲取HTTP響應中標簽名tokenName的input的值。# 獲取HTTP響應表單中input名稱為username的控件值PTS.HttpUtilities.valueFromBodyInput(username)方法:valueFromHiddenInput定義:def valueFromHiddenInput(tokenName)獲取HTTP響應中標簽名為tokenName的隱藏控件的值方法:valueFromTextBetween定義:def valueFromTextBetween(text, left, ri

19、ght)獲取text中被left和right字符串包圍的中間字符串,如果有多個匹配則返回第一個。示例:# 返回KDJAKPTS.HttpUtilities.valueFromTextBetween(text, tb_token;, ;) KDJAK # 返回KDJAKPTS.HttpUtilities.valueFromTextBetween(text, tb_token;, ;)方法:valuesFromTextBetween定義:def valuesFromTextBetween(text, left, right)日志服務/常見問題日志服務/常見問題功能和valueFromTextBet

20、ween類似,返回被left和right包圍的字符串列表。示例:PTS.HttpUtilities.valuesFromTextBetween(text, name=, )carname=VW/carname=BMW/carname=BENZ/ 比如上面這段xml代碼,調用下面這個方法會返回:VW,BMWBENZPTS.HttpUtilities.valuesFromTextBetween(text, name=, )方法:valueFromBodyBetween定義:def valueFromBodyBetween(left,right)獲取HTTP響應中被left和right字符串包圍的中

21、間字符串,如果有多個匹配則返回第一個。 示例:# 返回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代碼,調用下面這個方法會返回:VW,BMWBENZPTS.HttpUtilities.valuesFromBodyBetween(name=, )方法:setProxyServer定義:def setProxyServer(ip, port)PTS.HttpUtilities.setProxyServer(localhost, 8888)設置底層HTTP引擎使用IP為ip,端口為port的代理進行請求。示例:PTS.HttpUtilities.setProxyServer

23、(localhost, 8888)方法:setUseCookieModule定義:def setUseCookieModule(flag)設置腳本中是否使用CookieModule來進行cookie管理,默認使用。如果用戶想在HTTP的header里自己設置Cookie,則需要通過調用這個方法來將CookieModule禁用。PTS.HttpUtilities.setUseCookieModule(False)示例:PTS.HttpUtilities.setUseCookieModule(False)方法:checkResponse定義:def checkResponse(code, expe

24、ctedText=None)對HTTP響應進行腳本,返回碼是否為code,響應body里面是否包含expectedText。只有當返回碼符合且expectedText存在時返回True。當expectedText為None時(可以不傳入該參數),不進行文本校驗。# 當響應返回碼為200,且返回body包含test則返回True PTS.HttpUtilities.checkResponse(200, test)# 當響應返回碼為200,且返回body包含test則返回True PTS.HttpUtilities.checkResponse(200, test)方法:checkResponseB

25、yRegex定義:def checkResponseByRegex(code, expectedPattern=None)對HTTP響應進行腳本,返回碼是否為code,響應body里面是否包含expectedPattern這樣的正則字符串。只 有當返回碼符合且expectedPattern能夠匹配時,返回True。當expectedPattern為None時(可以不傳入該參 數),不進行文本校驗。# 當響應返回碼為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- # 當響應返回碼為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定義:參數化文件讀取操作類。方法:DsvReader定義:public DsvReader(fileName)DsvReader類構造函數,初始化類成員變量類:ParamManager定義:參數化功能管理類,提供對用戶上傳的參數文件進行管

27、理。方法:getInstance定義:publicstaticParamManagergetInstance() 返回參數化功能管理類靜態(tài)實例對象。示例:params = ParamManager.getInstance()一般情況下,下列代碼放在全局位置,既class TestRunner上面params = ParamManager.getInstance()方法:addProvider定 義 :public void addProvider(ParamProvider_Instance) 添加參數讀操作類實例對象。示例:params.addProvider(DsvReader(umail

28、addr.csv)一般情況下,下列代碼放在全局位置,既class TestRunner上面添加mailaddr.csv文件讀取操作實例對象params.addProvider(DsvReader(umailaddr.csv)方法:nextRecord定義:publicbooleannextRecord(paramFileName) publicbooleannextRecord(paramFileName,bCircle) 根據參數文件名加載當前參數位置的下一個位置的參數值示例:一般情況下,下列代碼放在全局位置,既class TestRunner上面添加mailaddr.csv文件讀取操作實例

29、對象負載均衡/常見問題負載均衡/常見問題params = ParamManager.getInstance() params = ParamManager.getInstance() params.addProvider(DsvReader(umailaddr.csv)一般情況下,下列代碼放在 class TestRunner 成員函數里面,例如action里面params.nextRecord(umailaddr.csv)加載mailaddr.csv下一個位置的參數值,參數值循環(huán),如果已到最后一個值,會繼續(xù)取第一個值params.nextRecord(umailaddr.csv)加載mail

30、addr.csv下一個位置的參數值,參數值不循環(huán),如果已到最后一個值,此函數值返回Falseif (not params.nextRecord(umailaddr.csv, False): raise ShutdownException(param file EOF)參數化數據用完后,要想腳本停止運行請?zhí)砑酉铝写a(需要導入:from HTTPClient import ShutdownException):if (not params.nextRecord(umailaddr.csv, False): raise ShutdownException(param file EOF)方法:get

31、ParamValue定 義 :public String getParamValue(paramName) 根據參數化文件和參數名取當前位置的參數值。示例:params. getParamValue (umailaddr.csv:sendmail_addr)讀取mailaddr.csv參數文件的sendmail_addr字段當前位置的值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請求/響應處理API from util import PTSfrom HTTPClient import NVPair from HTTPClient import Cookiefrom HTTPClient import HTTPRequest from HTTPClient import CookieModule# 腳本初始化段,可以設置壓測引擎的常用HTTP屬性#PTS.HttpUtilities.setKeepAlive(False)#PTS.HttpUtilities.setUrlEncod

33、ing(GBK)#PTS.HttpUtilities.setFollowRedirects(False)#PTS.HttpUtilities.setUseCookieModule(False)# 腳本執(zhí)行單元類,每個VU/壓測線程會創(chuàng)建一個TestRunner實例對象class TestRunner:# TestRunner對象的初始化方法,每個線程在創(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)# 主體壓測方法,每個線程在測試生命周期內會循環(huán)調用該方法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銷毀方法,每個線程循環(huán)執(zhí)行完成后執(zhí)行一次該方法def del (self):for c in self.init_cookies: CookieModule.addCookie(c, self.threadContext)self.action5() self.action6()# 定義請求函數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)# 編織壓測事務PTS.Framework.instrumentMethod(u 事 務 1, action3, TestRunner) PTS.Framework.instrumentMethod(u事務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對象的初始化方法,每個線程在創(chuàng)建TestRunner后執(zhí)行一次該方法def init (self):return# 主體壓測方法,每個線程在測試生命周期內會循環(huán)調用該方法def call (self):PTS.Data.delayReports = 1statusCode = self.action1() PTS.Framework.setExtraData(statusCode

48、) PTS.Data.report()PTS.Data.delayReports = 0# TestRunner銷毀方法,每個線程循環(huán)執(zhí)行完成后執(zhí)行一次該方法def del (self):return# 業(yè)務函數def action1(self):statusCode = 0L, 0L, 0L, 0L#以下為socket協(xié)議腳本#創(chuàng)建TCP Socketsk = socket.socket(socket.AF_INET,socket.SOCK_STREAM)#連接到服務器,服務器IP及端口號sk.connect(localhost,2000)#將發(fā)送內容送到服務器#將發(fā)送內容送到服務器send

49、Content = This is tcp socket test,Status:success sk.send(sendContent);#接收服務器返回內容RecvContent = sk.recv(1024)PTS.L(Content come from server is:+RecvContent)#關閉連接sk.close()#socket協(xié)議腳本結束#抓返回值value = PTS.HttpUtilities.valueFromTextBetween(RecvContent,Status:,)#判斷事務是否成功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# 編織壓測事務PTS.Framework.instrumentMethod(u事務名, 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對象的初始化方法,每個線程在創(chuàng)建TestRunner后執(zhí)行一次該方法def init (self):return# 主體壓測方法,每個線程在測試生命周期內會循環(huán)調用該方法def call (self):PTS.Data.delayReports = 1stat

52、usCode = self.action1() PTS.Framework.setExtraData(statusCode) PTS.Data.report()PTS.Data.delayReports = 0VPC/詞匯表VPC/詞匯表# TestRunner銷毀方法,每個線程循環(huán)執(zhí)行完成后執(zhí)行一次該方法def del (self):return# 業(yè)務函數def action1(self):statusCode = 0L, 0L, 0L, 0L#創(chuàng)建UDP Sockets = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)#設置服務器IP地址及端口號port = 20000host = localhost msg=0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論