产品的请求头增加了一些授权相关的key value,且涉及使用时间戳的token,考虑添加全局前置脚本,如何引用当前步骤的请求头对象,将根据规则生成的token添加进请求头?
以下脚本在场景步骤的前置脚本中执行成功,但在全局前置脚本中报错:
from org.apache.jmeter.protocol.http.control import Header
print(type(sampler))
# 获取当前请求的 HeaderManager
head_manager = sampler.getHeaderManager()
# print(type(head_manager)) #输出到后台日志
# print(dir(head_manager))
new_header = Header("New-Header", "New-Value")
# 将新的 Header 对象添加到 HeaderManager 中
head_manager.add(new_header)
# 打印添加后的 header
log.info("New header added: " + new_header.getName() + ": " + new_header.getValue());
因全局脚本的sampler不是httpsampler
但是http请求头通过脚本生成应该是一个常见的场景,ms应该需要支持吧?
不要用全局前置脚本。
新建一个场景,这个场景里,添加自定义脚本,把你写的脚本放进来,生成header里的各种动态值,并存放到变量里。
然后,在业务场景里直接引用这个场景就行了。 将来无论何时,如果 header里的value发生变化了,直接更新一个场景即可。
除此以外,在接口定义里,正常定义接口的header,这样更规范,你的同事也能看的明白。
谢谢!主要是场景用例都已经写好了,之前QA环境接口不需要鉴权,现在需要在UAT环境执行,需要鉴权,所以想有没有什么办法可以不需要逐一修改场景用例
现在看来也只能一个个添加引用了