相关值未捕获自定义字符串为左边界

问题描述 投票:0回答:1

我正在捕获一个字符串作为我的左边界(LB),然后将该LB划分为3个部分,使用strcpy并将值放在char MyString中。当我播放我的脚本时,相关性没有被捕获。

char MyString正在正确捕获值,因为当我用lr_output_message打印它时,它正在显示正确的LB,来自服务器响应值。

这正是我在做的......

char MyString[9999];

// original LB value is LB=DesktopQueuedActivitiesLV:0:CreateDate\" label=\"Create Date\" value=\"",

for (i = 0 ; i < 1 ; i++) {
    lr_save_int(i,"MyRow");
    strcpy(MyString, "DesktopQueuedActivitiesLV:");
    strcat(MyString, lr_eval_string("{MyRow}"));
    strcat(MyString, ":CreateDate\\\" label=\\\"Create Date\\\" value=\\\"");

    lr_output_message("MyString = %s",MyString);

    web_reg_save_param("DateReceived",
    lr_eval_string("LB={MyString}"),      
    "RB=\">", 
    "Ord=1",
    LAST);
}

重播时无法找到DateReceived的值

如果我用实际的LB值替换lr_eval_string("LB={MyString}")行,那么它正在工作。此外,lr_output_message("MyString = %s",MyString);正在打印完全相同的原始LB值。

无法弄清楚为什么MyString捕获正确的值但在播放web_reg_save_param("DateReceived",时无法在实际行中替换。请帮忙。

c loadrunner
1个回答
0
投票

您正在为循环内部的C参数使用loadrunner参数指定。 loadrunner参数引用在这里都是奇数,因为多次重新运行相同的相关语句,因为只有最后一个在执行时才会产生影响。

lr_output_message("MyString = %s",MyString);

web_reg_save_param("DateReceived",
lr_eval_string("LB={MyString}"),

请注意,lr_output_message()将MyString视为C变量,但web_reg_save_param()的第二个参数将相同的元素视为LoadRunner参数。您需要将C字符串转换为LoadRunner参数,建议使用其他名称(例如LR_MyString)来区分C字符串与LR参数,或者创建一个C参数,其形式为“LB = myleftboundary”

lr_output_message("MyString = %s",MyString);
lr_save_string(MyString, "LR_MyString");

web_reg_save_param("DateReceived",
lr_eval_string("LB={LR_MyString}"),

要么

strcpy(MyString, "LB=DesktopQueuedActivitiesLV:");
strcat(MyString, lr_eval_string("{MyRow}"));
strcat(MyString, ":CreateDate\\\" label=\\\"Create Date\\\" value=\\\"");

lr_output_message("MyString = %s",MyString);

web_reg_save_param("DateReceived",
MyString,      

由于在此测试中执行一次的循环,您似乎处于使用DateReceived创建伪数组的路径上,但您可能希望增加循环条目的数量。在这种情况下,您可能会因任何数量的大于1的数组元素而失败,因为您始终将最后一次执行为已满足的相关性。

© www.soinside.com 2019 - 2024. All rights reserved.