csv - Jmeter:如果令牌过期;那么只有我想重新运行授权 API 并更新令牌值
问题描述
如果令牌过期;那么只有我想重新运行授权 API 并更新令牌值。
为此,我使用了两个 CSV 文件;一个用于用户名,另一个用于令牌。
现在当我运行授权 API 时;我检查该用户是否存在令牌。
案例 1. 如果不存在,那么我将提取用户名、令牌、令牌类型、到期日期和发行日期。
情况 2。如果存在,那么我正在检查令牌是否过期,如果过期,则授权 API 将运行并在文件中更新相同的内容。
第一个条件工作正常,即 API 成功运行,提取的日期输入到 Token CSV 文件中。
我对第二种情况有疑问;即,如果过期日期小于当前日期,则针对相应用户,那么我想重新运行授权并更新令牌 csv 文件中的令牌、发行日期和到期日期。我怎样才能做到这一点。
我正在尝试实现这个 If Controller、JSON Extractor 和后处理器。在 if 条件下,我的表达式是
${__groovy((vars.get("UserName").equalsIgnoreCase(vars.get("UserName_1")) && (("${__groovy(TimeZone.setDefault(TimeZone.getTimeZone("GMT")); Date date = new Date(); date.format("EE'\,' dd MMM yyyy HH:mm:ss 'GMT'");,)}".compareTo(vars.get("ExpiresDate")) < 0)) || vars.get("ExpiresDate").equalsIgnoreCase("<EOF>"))
,)}
我在这个给定的链接中附加了 JMX 文件 [ https://filebin.net/gj0q3pyiaqlogt0w]
请帮助我实现这一目标。
解决方案
- If Controller 的“条件”区域中不能有 2 个__groovy() 函数,因为它不会被识别为有效条件
Date.format()函数返回一个String,因此您的 compareTo() 函数实际上是在String object上调用的。我相信您应该比较两个日期,因此您需要将这部分条件修改为:]
(new Date().compareTo(Date.parse("EE',' dd MMM yyyy HH:mm:ss 'GMT'", vars.get("ExpiresDate"))) < 0
一般来说,您可以有条件地运行请求,就像将相关模块控制器作为 If 控制器的子控制器一样简单,请查看在 JMeter文章中轻松编写 GOTO 语句以获取更多详细信息。
您的测试链接已断开,如果您需要进一步帮助,请考虑提供测试计划和所有相关数据(即 CSV 文件、可能的变量值等)
推荐阅读
- r - 按产品编号对 R 中的数据进行分组
- mysql - MySQL - 查找第一个匹配项或通配符
- python - 根据其他列中的数据创建动态列
- java - Java中自定义对象的空检查
- tags - 仅在未指定标签时运行 ansible 任务
- elasticsearch - 如何在 Elasticsearch 中修复“curl: (23) Failed writing body (4096 != 9142)”
- wcf - 使用 SwaggerWcf 时如何查看我的 Swagger 文档?
- forms - 内联表单输入和提交按钮在屏幕宽度 < 576 像素处未对齐
- python-2.7 - pypi 上 GEOS 的更高版本
- python - 使用 Python 合并 PDF 文件