继承实现AbstractFunction类
实现类依次实现以下几个步骤
1)新建实现类并继承AbstractFunction
注意:实现类的包名必须包含 xxx.functions.xxx,Jmeter 使用命名规则实现实现类的加载。
2)重写以下方法,每个方法的用途见下方代码注释
execute()
setParameters()
getReferenceKey()
getArgumentDesc()
/**
- 京东宙斯 下单标准字段常量
/
private static final String APP_KEY = “app_key”;
private static final String APP_SECRET = “app_secret”;
private static final String ACCESS_TOKEN = “access_token”;
private static final String TIMESTAMP = “timestamp”;
private static final String V = “v”;
private static final String METHOD = “method”;
private static final String BUY_PARAM_JSON = “360buy_param_json”;
/* - Jmeter中自定义的函数名,在Jmeter的函数助手中可以看到
*/
private static final String FUNC_NAME = “__GenSignFunction”;
/**
- 自定义函数的描述,入参,出参,方便使用人员参考使用
*/
private static final List desc = new ArrayList<>();
static {
desc.add(“This function is used to generate the JD’s JOS sign value”);
}
/**
- 此为自定义函数核心实现类,其中,入参SampleResult为上次运行的结果,Sampler为当前的采集器;
- 返回值为该函数的返回值
- @param sampleResult
- @param sampler
- @return
- @throws InvalidVariableException
*/
@Override
public String execute(SampleResult sampleResult, Sampler sampler) throws InvalidVariableException {
// 入参处理
String param = String.valueOf((CompoundVariable)paramValues[0]);
String signResult = paramHandler(param);
return signResult;
}
/**
- 按京东宙斯sign加密规则生成标准sign
- @param param
- @return
*/
public String paramHandler(String param){
Map<String,String> valueMap = new HashMap();
// 按&符号分割
String[] paramArray = param.split(“&”);
for (int i = 0; i < paramArray.length-1; i++) {
String key = paramArray[i].split(“=”)[0];
String value = paramArray[i].split(“=”)[1];
valueMap.put(key,value);
};
// 京东宙斯标准sign
String josGign = EncryptUtil.getSignature(valueMap.get(“app_secret”)+BUY_PARAM_JSON+valueMap.get(“360buy_param_json”)
+ACCESS_TOKEN+valueMap.get(“access_token”)
+APP_KEY+valueMap.get(“app_key”)
+METHOD+valueMap.get(“method”)
+TIMESTAMP+valueMap.get(“timestamp”)
+V+valueMap.get(“v”)
+valueMap.get(“app_secret”));
return josGign;
}
/**
- 配置入参,jmeter函数助手入参
/
@Override
public void setParameters(Collection collection) throws InvalidVariableException {
paramValues = collection.toArray();
}
/* - 此方法返回自定义的函数名称
/
@Override
public String getReferenceKey() {
return FUNC_NAME;
}
/* - 此方法返回函数描述信息
*/
@Override
public List getArgumentDesc() {
return desc;
}
最终项目结构
Jmeter 加载扩展包
以上开发完成,打包此项目,注意这里的打包要包含依赖包。
maven构建配置
${project.artifactId} install org.apache.maven.plugins maven-compiler-plugin 1.8 1.8 org.apache.maven.plugins maven-assembly-plugin jar-with-dependencies assemble-all package single项目打包
打包指令如下
mvn package -Dmaven.test.skip=true
Jmeter加载扩展包
将打包后的扩展包放置到 Jmeter 的ext目录:apache-jmeter-5.4.3/lib/ext/
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数软件测试工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年软件测试全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上软件测试开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注软件测试)
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新**
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注软件测试)
[外链图片转存中…(img-c2NcO1ex-1712973629012)]
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!