Значение корреляции не записывается для пользовательской строки в качестве левой границы - PullRequest
0 голосов
/ 04 апреля 2019

Я записываю строку как левую границу (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

Если я заменю строку lr_eval_string("LB={MyString}") с фактическим значением LB, тогда оно работает.Кроме того, lr_output_message("MyString = %s",MyString); печатает точно такое же исходное значение LB.

Не могу понять, почему MyString записывает правильное значение, но не может заменить во время реальной строки при игре web_reg_save_param("DateReceived",.Пожалуйста, помогите.

1 Ответ

0 голосов
/ 07 апреля 2019

Вы используете обозначение параметра loadrunner для параметра C внутри цикла. Ссылка на параметр 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}"),

OR

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,      

Похоже, вы находитесь на пути создания массива psuedo с DateReceived из-за цикла, который выполняется один раз в этом тесте, но вы, вероятно, хотите увеличить количество записей цикла. В этом случае вы можете потерпеть неудачу для любого числа элементов массива, превышающего 1, поскольку у вас всегда будет выполняться последний раз как выполненная корреляция.

...