怎么做带数据库的网站,中山市做网站的公司,陕西省建设厅网站查询,中小企业网站建设与推广在JMeter中开发自定义函数是一个常见的需求#xff0c;允许我们扩展JMeter的功能以适应特定的测试需求。自定义函数可以用来处理数据#xff0c;生成输出#xff0c;或者执行特定的运算。通过JMeter函数二次开发可以帮我们解决实际测试过程中造数难的问题 用过JMeter的同学…在JMeter中开发自定义函数是一个常见的需求允许我们扩展JMeter的功能以适应特定的测试需求。自定义函数可以用来处理数据生成输出或者执行特定的运算。通过JMeter函数二次开发可以帮我们解决实际测试过程中造数难的问题用过JMeter的同学对JMeter内置的函数助手不陌生使用函数助手可以帮我们非常高效生成一些数据满足我们的接口测试的要求。比如我们想要生成随机的手机号码可以使用RandomString函数具体做法设置手机号码前缀区段比如189、138、177这些然后再使用RandomString函数帮我们生成后8位的随机数然后拼接成手机号码但是有时候测试需求中的手机号码区段并不是固定的如果想要手机号码区段也能够满足随机的要求并且符合运营商开放的区段,又或者是生成合法的随机身份证号码这类需求该如何实现呢JMeter的内置函数满足不了此时我们可以对JMeter函数进行二次开发。JMeter二次开发实现逻辑自定义函数必须继承于JMeter的AbstractFunction类并需要重写该类的4个方法execute函数执行逻辑必需自定义函数的核心逻辑并返回经过处理后的内容getReferenceKey函数名称必需返回一个字符串表示在JMeter中使用自定义函数的函数名一般以双下划线开头如__IDNumbersetParameters设置函数接收参数值如果自定义函数有参数用于接收调用时传递过来的参数注意使用时字符串参数不要加双引号getArgumentDesc函数参数描述如果自定义函数有参数用于返回函数参数说明JMeter二次开发具体步骤1、创建Java Maven项目选择从maven-archetype-quickstart模板创建在pom.xml中添加依赖ApacheJMeter_java、ApacheJMeter_core注意与使用的JMeter版本保持一致!--引入JMeter依赖-- dependency groupIdorg.apache.jmeter/groupId artifactIdApacheJMeter_java/artifactId version5.4.3/version /dependency dependency groupIdorg.apache.jmeter/groupId artifactIdApacheJMeter_core/artifactId version5.4.3/version /dependency2、自定义函数类继承AbstractFunction创建functions子包在已有包中添加一个名为functions子包添加自定义函数 在functions子包下添加自定义函数类并继承AbstractFunction类并实现该类的4个抽象方法在execute方法中添加插件逻辑在getReferenceKey方法中返回自定义名称函数如果函数有参数在setParameters方法获取传递过来的参数如果函数有参数在getArgumentDesc中描述接收的参数public class IDNumber extends AbstractFunction { //参数 private String area; /** * 函数执行逻辑自定义函数的核心逻辑并返回经过处理后的内容 * * param sampleResult * param sampler * return * throws InvalidVariableException */ public String execute(SampleResult sampleResult, Sampler sampler) { //调用身份证生成逻辑使用了第三方的业务逻辑 String idNumber IdNumberGenerateUtil.generate(area); return idNumber; } /** * 设置函数接收参数值接收JMeter界面用户传递过来的参数 * * param parameters * throws InvalidVariableException */ public void setParameters(CollectionCompoundVariable parameters) throws InvalidVariableException { //检查参数个数 checkParameterCount(parameters, 0, 1); //获取参数 Object[] params parameters.toArray(); //获取区域 if (params.length 0) { CompoundVariable cvArea (CompoundVariable) params[0]; this.area cvArea.execute(); } } /** * 函数名称JMeter界面函数的名称 * * return */ public String getReferenceKey() { return __IDNumber; } /** * 函数参数描述JMeter界面显示的参数说明 * * return */ public ListString getArgumentDesc() { ListString desc new ArrayListString(); desc.add(城市名); return desc; } }3、将代码打包成jar文件方式一项目没有第三方依赖直接使用右侧Maven菜单的Lifecyle-package打包直接使用jar包方式二项目有第三方依赖需要按照如下步骤操作在pom.xml文件的build-plugins配置节下添加如下内容build plugins !--将依赖打包到jar包-- plugin groupIdorg.apache.maven.plugins/groupId artifactIdmaven-assembly-plugin/artifactId version2.5.5/version configuration descriptorRefs descriptorRefjar-with-dependencies/descriptorRef /descriptorRefs /configuration /plugin plugin artifactIdmaven-compiler-plugin/artifactId version3.8.1/version configuration source1.8/source target1.8/target encodingUTF-8/encoding /configuration /plugin /plugins /build使用右侧Maven菜单的Plugins-assembly-assemble:assembly打包会生成一个带-jar-with-dependencies后缀的jar包直接使用此xxxx–jar-with-dependencies.jar包4、将jar文件部署到JMeter中将上一步的xxx.jar文件拷贝到JMeter安装目录的lib/ext目录中重启JMeter打开函数助手即可使用自定义的函数感谢每一个认真阅读我文章的人礼尚往来总是要有的虽然不是什么很值钱的东西如果你用得到的话可以直接拿走这些资料对于【软件测试】的朋友来说应该是最全面最完整的备战仓库这个仓库也陪伴上万个测试工程师们走过最艰难的路程希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取