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

版权声明:原创不易,欢迎分享和转载,同时请注明出处,谢谢! https://blog.csdn.net/lijing742180/article/details/84203018

原创不易,欢迎分享和转载,同时请一定注明出处:https://blog.csdn.net/lijing742180/article/details/84203018
个人公众号–【媛测】

在GET请求脚本中添加添加信息头、cookies和自定义参数,有两种方式:
一种是在UI界面添加后自动生成脚本,一种是直接在脚本中添加。

一、通过UI界面添加

通过 UI 设置:脚本 -> 新建脚本 -> 显示高级配置
在这里插入图片描述
生成代码如下:

@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, "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。

二、直接在脚本中添加

(在此只演示添加 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://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[])

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

猜你喜欢

转载自blog.csdn.net/lijing742180/article/details/84203018