此文搬運自本人csdn博客 https://blog.csdn.net/lijing7...
上一篇文章中講了ngrinder怎麼快速發送一個GET請求,在此詳細解讀一下其中的腳本。
(前提是你已經瞭解了groovy的基本代碼結構,若是還不瞭解的先看這裏--搭建 nGrinder 性能測試平臺 並快速使用)java
在ngrinder管理臺主頁,點擊script-->Create a script,並填寫腳本名稱和請求的url,以下所示:cookie
點擊 Create 按鈕,nGrinder會自動生成對應的腳本結構,若是沒有參數須要設置的話,能夠直接運行了。性能
解析見代碼中的註釋測試
import static net.grinder.script.Grinder.grinder import static org.junit.Assert.* import static org.hamcrest.Matchers.* import net.grinder.plugin.http.HTTPRequest import net.grinder.plugin.http.HTTPPluginControl import net.grinder.script.GTest import net.grinder.script.Grinder import net.grinder.scriptengine.groovy.junit.GrinderRunner import net.grinder.scriptengine.groovy.junit.annotation.BeforeProcess import net.grinder.scriptengine.groovy.junit.annotation.BeforeThread // import static net.grinder.util.GrinderUtils.* // You can use this if you're using nGrinder after 3.2.3 import org.junit.Before import org.junit.BeforeClass import org.junit.Test import org.junit.runner.RunWith import org.junit.FixMethodOrder import org.junit.runners.MethodSorters import java.util.Date import java.util.List import java.util.ArrayList import HTTPClient.Cookie import HTTPClient.CookieModule import HTTPClient.HTTPResponse import HTTPClient.NVPair /** * A simple example using the HTTP plugin that shows the retrieval of a * single page via HTTP. * * This script is automatically generated by ngrinder. * * @author admin */ @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() { // 設置請求響應超時時間(ms),超過則拋出異常 HTTPPluginControl.getConnectionDefaults().timeout = 6000 // 建立GTest對象,第一個參數1表明有多個請求/事務時的執行順序ID // 第二個參數是請求/事務的名稱,會顯示在summary結果中 // 有多個請求/事務時,要建立多個GTest對象 test = new GTest(1, "www.baidu.com") request = new HTTPRequest() grinder.logger.info("before process."); } @BeforeThread public void beforeThread() { // 註冊事件,啓動test,第二個參數要與@Test註解的方法名保持一致 // 有多個請求/事務時,要註冊多個事件 test.record(this, "test") grinder.statistics.delayReports=true; grinder.logger.info("before thread."); } @Before public void before() { // 在這裏能夠添加headers屬性和cookies request.setHeaders(headers) cookies.each { CookieModule.addCookie(it, HTTPPluginControl.getThreadHTTPClientContext()) } grinder.logger.info("before thread. init headers and cookies"); } @Test public void test(){ // 發送GET請求 HTTPResponse result = request.GET("https://www.baidu.com", params) // 斷言HTTP請求狀態碼 assertThat(result.statusCode, is(200)) } }