ngrinder解讀goovy最基本的GET請求腳本

此文搬運自本人csdn博客 https://blog.csdn.net/lijing7...

上一篇文章中講了ngrinder怎麼快速發送一個GET請求,在此詳細解讀一下其中的腳本。
(前提是你已經瞭解了groovy的基本代碼結構,若是還不瞭解的先看這裏--搭建 nGrinder 性能測試平臺 並快速使用java

1、自動生成GET請求腳本

一、配置 Create a script

在ngrinder管理臺主頁,點擊script-->Create a script,並填寫腳本名稱和請求的url,以下所示:cookie

clipboard.png

點擊 Create 按鈕,nGrinder會自動生成對應的腳本結構,若是沒有參數須要設置的話,能夠直接運行了。性能

2、詳細解決GET請求腳本

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))
    }
}
相關文章
相關標籤/搜索