51Testing软件测试论坛

标题: 请高手指导LR如何调用命令行程序以及获取命令行程序返回的值 [打印本页]

作者: lyss_85    时间: 2010-10-14 22:22
标题: 请高手指导LR如何调用命令行程序以及获取命令行程序返回的值
我需要做一个压力测试,遇到了一些难题,请高手们指点一下,小弟万分感谢
1、需要在LoadRunner中启动一个win32命令行程序,调用程序时并传入参数,目前找到system()和popen()这两个函数能够启动命令行来启动win32命令行程序,但是不知道如何获取调用程序后命令行程序的返回值,请高手帮忙举个例子教一下我,例如system()的返回值如何获取
2、请问system()和popen()调用起来的命令行程序如果有返回值,如何在LoadRunner脚本中怎么获取啊,请帮忙举个简单的例子
3、我需要在脚本中实现访问本地或远程机器上某个目录下的一个文件夹或一个txt文件是否存在,请问这个需要使用那个函数来实现,请帮忙举个简单的脚本例子,

     小弟是初学者,请高手们告知小弟以上问题的答案,小弟万分感谢,
作者: PrefTest    时间: 2010-10-15 10:40
int fileExist = -1;
        fileExist = access("C:\\test.txt", 0);
        lr_output_message("%d",fileExist);
作者: lyss_85    时间: 2010-10-15 11:40
回复 2# PrefTest

感谢PrefTest
那个函数能够实现扫描本地txt文件是否存在的功能,
不知道还有没有高手能够回答如何扫描另一台服务器上的一个文件是否存在的方法,
作者: lyss_85    时间: 2010-10-15 11:41
那位能回答获取system()和popen()返回值的例子啊,期待高手到来
作者: 云层    时间: 2010-10-15 12:45
理论上应该不行,直接换成dll估计可以
作者: lyss_85    时间: 2010-10-15 14:11
从网上搜到的信息说system()提供返回值,不过是返回命令行程序是否执行了,不会返回命令行程序返回的信息,但有人说可以换成popen来获取返回值,有人知道popen是否能获取到命令行程序返回的信息
其次,有人知道扫描远程机器上一个文件是否存在的函数怎么用吗?
作者: PrefTest    时间: 2010-10-15 17:22
popen可参考这个:
http://www.myloadtest.com/dos-commands-from-loadrunner/
作者: lyss_85    时间: 2010-10-16 01:12
请高手光临
作者: lyss_85    时间: 2010-10-16 09:50
请高手进来帮忙解答疑问
作者: 婴儿    时间: 2010-12-28 14:34
本帖最后由 婴儿 于 2010-12-28 14:37 编辑

1.要处理返回值,system()是写到文件中,再从文件中读出来处理的。如:
system("dir c:\\ > c:\\temp.txt"),将c盘根目录下目录和文件信息写到c:\temp.txt,再用文件函数将数据从该文件中读出进行处理,此函数用法可查LR帮助
2.同上,popen()类似,但相对方便些,不需要指定文件,所以没有关闭、删除文件这些动作。此函数在LR帮助中查不到
3.可以用打开文件的方式判断本机某目录下是否存在某文件,但打开失败不能判定该文件不存在。用dir的方式直接查找文件更合理,下面用popen()举例,查看本机c盘根目录下是否存在隐藏文件IO.SYS:

  1. Action()
  2. {
  3.     //查找本机某目录下是否存在某文件

  4.     char * filename = "c:\\IO.SYS";
  5.     char command[1024],buffer[10240];
  6.     long stream;

  7.     sprintf(command,"dir %s /a",filename);


  8.     //打开数据流,读取
  9.     if ((stream = popen(command, "r")) == NULL) {
  10.         lr_error_message ("Cannot open stream");
  11.         return -1;
  12.     }

  13.     fread(buffer, sizeof(char), 10240, stream);
  14.     if (ferror(stream))
  15.         lr_output_message ("Error reading stream");

  16.     lr_output_message ("%s = \n%s", command, buffer );


  17.     //处理从数据流读取的内容
  18.     if(strstr(buffer,"个"))
  19.         lr_output_message ("File %s exist",filename);
  20.     else
  21.         lr_output_message ("File %s not exist",filename);

  22.     return 0;
  23. }
复制代码
远程的更麻烦,未尝试




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2