VUGEN中如何将时间戳变量传入文件名变量?
解决VUGEN中把时间戳参数传入文件名的问题
嘿,我看你在VUGEN里尝试把c_launchid这个时间戳参数拼进文件名里,现在的写法有两个小问题需要修正——C语言里没法直接在字符串里用{变量名}这种插值方式,而且你对timestamp变量的赋值也不对,lr_output_message返回的是输出的字符数,不是参数的实际值。
下面给你两种靠谱的实现方法,都是VUGEN里常用的:
方法一:用C标准库的sprintf拼接
这种方法适合习惯C语言开发的同学,需要定义一个足够大的字符数组来存储生成的文件名:
// 定义足够大的字符数组存放文件名,避免溢出 char filename[256]; // 先获取时间戳参数 web_save_timestamp_param("c_launchid", LAST); // 用sprintf把路径和时间戳参数拼接起来 sprintf(filename, "C:\\temp\\icafile_%s.ica", lr_eval_string("{c_launchid}")); // 验证一下生成的文件名是否正确 lr_output_message("最终文件名: %s", filename);
这里用%s是因为web_save_timestamp_param生成的参数是字符串类型,直接拼接就行,不用转成int。
方法二:用LoadRunner自带的lr_param_sprintf
这个方法更贴合LR的使用场景,它会自动管理内存,不用你担心数组大小的问题:
// 先获取时间戳参数 web_save_timestamp_param("c_launchid", LAST); // 生成一个包含文件名的新参数,名字叫filename_param lr_param_sprintf("filename_param", "C:\\temp\\icafile_%s.ica", lr_eval_string("{c_launchid}")); // 后续需要用到文件名时,直接调用这个参数即可 lr_output_message("最终文件名: %s", lr_eval_string("{filename_param}"));
为什么你的原代码不行?
- 字符串插值错误:C语言没有
"xxx_{变量}xxx"这种语法,字符串里的{timestamp}只会被当成普通字符,不会替换成变量值。 - timestamp变量赋值错误:
lr_output_message()的返回值是输出内容的字符长度,不是c_launchid的参数值,所以这个变量其实没拿到你想要的时间戳。
内容的提问来源于stack exchange,提问作者Robin Yadav
相关产品推荐
相关产品推荐

