soapui - SoapUI - 将 JWT 令牌设置为全局项目参数
问题描述
我是 SaopUI 的新手。我用资源创建了一个项目。我需要设置一些变量并将它们用于请求。例如,我有我的 JWT 令牌,并且 JWT 令牌会经常更改(测试不同的用户和权限 = 不同的 JWT 令牌)所以,确实存在我可以为项目全局设置参数并将其用作请求的 HEADER 参数的方式“链接”(在那个参数/值上)?
谢谢!,简
解决方案
您可能对属性扩展感兴趣
SoapUI 提供了一种通用语法来在处理过程中动态插入(“扩展”)属性值。语法如下:
${[scope]propertyName[#xpath-expression]}
其中范围可以是以下文字值之一:
#Project# - 引用项目属性(跨特定 SoapUI 项目引用属性)
#TestSuite# - 引用包含 TestSuite 中的 TestSuite 属性
#TestCase# - 引用包含 TestCase 中的 TestCase 属性
#MockService# - 引用包含 MockService 中的 MockService 属性
#Global# - 引用全局属性。在文件>首选项>全局属性选项卡中找到。跨所有项目的参考属性
#System# - 引用系统属性。在帮助>系统属性中找到。
#Env# - 引用环境变量
[TestStep 名称]# - 引用一个 TestStep 属性
当然,许多范围只有在可用时才能工作,即您不能在 TestCase 脚本中使用#MockService# 范围,因为没有包含 MockService 可供访问。
如果未指定范围,则按如下方式解析属性:
检查具有匹配名称的属性的当前上下文(例如 TestRunContext)
检查匹配的全局属性
检查匹配的系统属性
例如,您可以创建一个 groovy 步骤来设置变量:
import groovy.json.JsonSlurper
project = testRunner.getTestCase().testSuite.getProject();
testStep = testRunner.testCase.testSteps["YourApiRequestStep"]
def Response = testStep.getProperty("response").value;
def someFieldYouWantToSave = ""
if (Response == null) {
log.error('No Response found.');
}
else {
def jSlurper = new JsonSlurper();
def json = jSlurper.parseText(Response);
if (json.get("theFieldFromTheResponse") == null){
log.error "TheFieldFromTheResponse not found in response. Please execute the teststep and try again"
} else {
someFieldYouWantToSave = json.get("theFieldFromTheResponse").toString()
testRunner.testCase.setPropertyValue("someFieldYouWantToSave", someFieldYouWantToSave)
}
}
然后,您可以在请求中使用该属性,如下所示:${#Project#theFieldFromTheResponse}
推荐阅读
- vb.net - 应用程序不会显示气球提示
- ruby - PATH 中的 GeckoDriver,但出现 Selenium Webdriver 错误
- ios - 如何防止 ios 动画被套接字消息中断
- tfs - TFS 通知不适用于看板列更改
- ios - 来自 WKWebView 的视频后 Spotify 无法恢复
- spring - 无法从 spring-servlet.xml 创建 propertyConfigurer 的 bean
- image - Python Pillow 的 ImageTk 不显示源自某些文件类型的图像
- java - 詹金斯奴隶无法写入 jarCache
- bash - Bash:在变量中制作 cat 合并大括号文件 {}
- vba - 将文档属性字段添加到页脚会删除现有的页码