nGrinder中快速编写groovy脚本03-在GET请求中发送参数

在GET请求脚本中添加添加信息头、cookies和自定义参数,有两种方式:
web

一种是在UI界面添加后自动生成脚本,一种是直接在脚本中添加。cookie

1、经过UI界面添加ide

经过 UI 设置:脚本 -> 新建脚本 -> 显示高级配置this


webp

生成代码以下:spa

@RunWith(GrinderRunner)get

@FixMethodOrder(MethodSorters.NAME_ASCENDING)it

class TestRunner {io

public static GTest testcookies

public static HTTPRequest requestclass

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, "www.baidu.com")

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", "www.baidu.com", "", 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://www.baidu.com", params)

assertThat(result.statusCode, is(200))

// 这是我经过引导页手动添加的断言

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

}

}

能够看到这种方式是在@beforeProcess中添加heads 、params、cookies。

2、直接在脚本中添加

(在此只演示添加 headers 和 params的方式,添加cookies是相似的,再也不赘述)

根据在脚本中添加的位置不一样,能够分为如下几种方式:

一、在 @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()


二、直接在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")

]


三、在 @Test 注解的方法中添加 headers 和 params

在发送request请求的方法里添加参数:

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

// 添加headers

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

// 添加params

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

到底选择哪一种方式,要根据具体的参数类型和业务场景来决定。

相关文章
相关标签/搜索