性能工具之 nGrinder 参数化脚本编写

Posted zuozewei

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了性能工具之 nGrinder 参数化脚本编写相关的知识,希望对你有一定的参考价值。

一、前言

在做性能测试,脚本参数化是一个比较好玩的事情,不同工具参数写法不一样,简单可以从三个方面(随机、唯一,顺序)获取参数进行脚本参数化。

nGrinder 参数化需要一点代码基础才可以实现。

二、 在线编写

1、创建脚本

点击脚本,选择需要参数化的脚本:
在这里插入图片描述
新建文件为:resources,并且在该目录下上传参数文件:
在这里插入图片描述
新建脚本:
在这里插入图片描述
如果有头信息等信息,点击高级即可看到:
在这里插入图片描述

2、参考脚本

import org.junit.Before
import org.junit.BeforeClass
import org.junit.Test

import static net.grinder.script.Grinder.grinder

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 java.util.Date
import java.util.List
import java.util.ArrayList

import HTTPClient.Cookie
import HTTPClient.CookieModule
import HTTPClient.HTTPResponse
import HTTPClient.NVPair

/**
 * @Title: TestRunner
 * @Description: 脚本参数化 demo
 * @author: 7d
 * @date: 2019/10/9 / 19:50
 */
class TestRunner {

    public static GTest test
    public static HTTPRequest request
    public static NVPair[] headers = []
    public static NVPair[] params = []
    public static Cookie[] cookies = []
    public static List lineList //存放参数文件记录

    @BeforeProcess
    public static void beforeProcess() {
        HTTPPluginControl.getConnectionDefaults().timeout = 6000
        test = new GTest(1, "blog.51cto.com")
        request = new HTTPRequest()
        lineList = new File("E:\\\\work\\\\apk\\\\uiElement\\\\assortElement.properties1").readLines("UTF8");

        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://blog.51cto.com/357712148/2440849", params)

        if (result.statusCode == 301 || result.statusCode == 302) {
            grinder.logger.warn("Warning. The response may not be correct. The response code was {}.", result.statusCode);
        } else {
            assertThat(result.statusCode, is(200));
        }
    }
}

调试结果为:

在这里插入图片描述
在这里插入图片描述

三、IDE 编写

在这里插入图片描述
测试结果为:
在这里插入图片描述
如果是源码部署可以在如图位置新建相关目录与脚本,把上面脚本参数路径修改下即可跑起来。
在这里插入图片描述

四、总结

这里介绍简单的参数化写法,如果想了解更多的写法请看源码或者查找资料,因为源码大家已经部署成功,写法网络上很多,可轻松掌握。

源码地址:

  • https://github.com/zuozewei/blog-example/blob/master/Performance-testing/01-test-tool/nGrinder/nGrinder-demo/script-sample/test-with-login/TestRunner.groovy

相关系列:

以上是关于性能工具之 nGrinder 参数化脚本编写的主要内容,如果未能解决你的问题,请参考以下文章

性能工具之 nGrinder 关联脚本编写

性能工具之 nGrinder 之 Get 请求脚本编写

性能测试之工具对比-ngrinder jmeter loadunner

性能工具之 nGrinder 源码安装

性能工具之 nGrinder 入门安装及使用

nGrinder性能测试工具入门