我想在每次运行VUser脚本时上传一个唯一的文件(如在Controller场景中的#vuser中),我在不同的论坛上找到了一些示例,并将它们放在一起试图共同执行此任务:
Action()
{
char command[100];
sprintf(command, “copy C:\\source_dir\\srcFile.txt C:\\source_dir\\srcFile-%s.txt”,
lr_eval_string (”{iteration_number}”));
system(command);
web_submit_data("FileUpload",
"Action={URL}",
"Method=POST",
"EncType=multipart/form-data",
"TargetFrame=",
"RecContentType=text/html",
"Mode=HTML",
ITEMDATA,
"Name=File", "Value=C:\\source_dir\\srcFile-%s.txt", "File=yes", ENDITEM,
LAST);
sprintf(command, “del C:\\source_dir\\srcFile-%s.txt”, lr_eval_string (”{iteration_number}”));
system(command);
return 0;
}
但是这个脚本每次都会创建100个文件,这不是我想要帮助的。 1.如何修改我的脚本以创建100个唯一文件(一次)。 2.然后在控制器中的每个VUser上运行一次上传(web_submit_data函数)。 3.然后最后删除文件?
也许将文件生成放在init中,将文件删除到VUser脚本的末尾?
答案 0 :(得分:2)
你有几个选择。
答案 1 :(得分:1)
我认为你的剧本几乎就在那里。我看到的问题是您没有足够的文件名来创建您正在创建的文件。您的100个用户中的每一个都将以相同的迭代编号开始。
您可以尝试这样的操作,在脚本的参数列表中创建一个名为“ vuser ”的新参数,并为其指定类型“ Vuser ID ”。这将在控制器中运行时填充为单个vuser的编号。这将确保您的用户在使用该文件时不会互相踩踏。将其添加到您的文件名中,如下所示:
sprintf(command, "copy C:\\source_dir\\srcFile.txt C:\\source_dir\\srcFile-%s%s.txt,
lr_eval_string ("{iteration_number}")
lr_eval_string ("{vuser}") );
只要所有用户都在Controller中的同一组中,这将有效。如果您在多个组中使用它,则通过向文件名添加“组名”参数来执行相同的操作。