nGrinder中快速編寫groovy指令碼03-在GET請求中傳送引數

testingbang發表於2019-08-27

在GET請求指令碼中新增新增資訊頭、cookies和自定義引數,有兩種方式:

一種是在UI介面新增後自動生成指令碼,一種是直接在指令碼中新增。

一、透過UI介面新增

透過 UI 設定:指令碼 -> 新建指令碼 -> 顯示高階配置


nGrinder中快速編寫groovy指令碼03-在GET請求中傳送引數

生成程式碼如下:

@RunWith(GrinderRunner)

@FixMethodOrder(MethodSorters.NAME_ASCENDING)

class TestRunner {

public static GTest test

public static HTTPRequest request

public static NVPair[] headers = []

public static NVPair[] params = []

public static Cookie[] cookies = []

@BeforeProcess

public static void beforeProcess() {

HTTPPluginControl.getConnectionDefaults().timeout = 6000

test = new GTest(1, ")

request = new HTTPRequest()

// =========下面是我剛才新增的引數=========

// Set header datas

List<NVPair> headerList = new ArrayList<NVPair>()

headerList.add(new NVPair("Connection", "keep-alive"))

headerList.add(new NVPair("User-Agent", "Mozilla/5.0 (X11; Linux x86_64; rv:12.0) Gecko/20100101 Firefox/21.0"))

headers = headerList.toArray()

// Set param datas

List<NVPair> paramList = new ArrayList<NVPair>()

paramList.add(new NVPair("name", "jing"))

paramList.add(new NVPair("age", "18"))

paramList.add(new NVPair("sex", "beauty"))

params = paramList.toArray()

// Set cookie datas

List<Cookie> cookieList = new ArrayList<Cookie>()

cookieList.add(new Cookie("myToken", "xxxxxxxx", ", "", new Date(32503647599000L), false))

cookies = cookieList.toArray()

// =========上面是我剛才新增的引數=========

grinder.logger.info("before process.");

}

@BeforeThread

public void beforeThread() {

test.record(this, "test")

grinder.statistics.delayReports=true;

grinder.logger.info("before thread.");

}

@Before

public void before() {

request.setHeaders(headers)

cookies.each { CookieModule.addCookie(it, HTTPPluginControl.getThreadHTTPClientContext()) }

grinder.logger.info("before thread. init headers and cookies");

}

@Test

public void test(){

HTTPResponse result = request.GET("https://, params)

assertThat(result.statusCode, is(200))

// 這是我透過引導頁手動新增的斷言

assertThat(result.getText(), containsString("jing"))

}

}

可以看到這種方式是在@beforeProcess中新增heads 、params、cookies。

二、直接在指令碼中新增

(在此只演示新增 headers 和 params的方式,新增cookies是類似的,不再贅述)

根據在指令碼中新增的位置不同,可以分為以下幾種方式:

1、在 @BeforeProcess 註解的方法裡新增 headers 和 params

這種方法跟第一種方法的效果是一樣的

// 新增headers

List<NVPair> headerList = new ArrayList<NVPair>()

headerList.add(new NVPair("Accept-Language", "en-US,zh-CN;"))

// ...可以新增多個header

headers = headerList.toArray()

// 新增params

List<NVPair> paramList = new ArrayList<NVPair>()

paramList.add(new NVPair("accessToken", "xxxxxxxxx"))

// ...可以新增多個param

params = paramList.toArray()


2、直接在TestRunner類的靜態變數中新增 headers 和 params

在整個類最前面定義靜態變數的地方,直接給變數賦值:

// 新增headers

public static NVPair[] headers = [

    new NVPair("Accept-Language", "en-US,zh-CN;")

]

// 新增params

public static NVPair[] params = [

    new NVPair("accessToken", "xxxxxxxxxx")

]


3、在 @Test 註解的方法中新增 headers 和 params

在傳送request請求的方法裡新增引數:

// HTTPResponse result = request.GET("https://, params)

// 新增headers

HTTPResponse result = request1.GET("https://, [new NVPair("Accept-Language", "en-US,zh-CN;")] as NVPair[])

// 新增params

HTTPResponse result = request.GET("https://, [new NVPair("accessToken", "xxxxxx")] as NVPair[])

到底選擇哪種方式,要根據具體的引數型別和業務場景來決定。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69942496/viewspace-2655054/,如需轉載,請註明出處,否則將追究法律責任。

相關文章