51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 3657|回复: 9
打印 上一主题 下一主题

[原创] 请高手指导LR如何调用命令行程序以及获取命令行程序返回的值

[复制链接]

该用户从未签到

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

     小弟是初学者,请高手们告知小弟以上问题的答案,小弟万分感谢,
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2010-10-15 10:40:57 | 只看该作者
int fileExist = -1;
        fileExist = access("C:\\test.txt", 0);
        lr_output_message("%d",fileExist);
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2010-10-15 11:40:13 | 只看该作者
回复 2# PrefTest

感谢PrefTest
那个函数能够实现扫描本地txt文件是否存在的功能,
不知道还有没有高手能够回答如何扫描另一台服务器上的一个文件是否存在的方法,
回复 支持 反对

使用道具 举报

该用户从未签到

4#
 楼主| 发表于 2010-10-15 11:41:10 | 只看该作者
那位能回答获取system()和popen()返回值的例子啊,期待高手到来
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2010-10-15 12:45:31 | 只看该作者
理论上应该不行,直接换成dll估计可以
回复 支持 反对

使用道具 举报

该用户从未签到

6#
 楼主| 发表于 2010-10-15 14:11:49 | 只看该作者
从网上搜到的信息说system()提供返回值,不过是返回命令行程序是否执行了,不会返回命令行程序返回的信息,但有人说可以换成popen来获取返回值,有人知道popen是否能获取到命令行程序返回的信息
其次,有人知道扫描远程机器上一个文件是否存在的函数怎么用吗?
回复 支持 反对

使用道具 举报

该用户从未签到

7#
发表于 2010-10-15 17:22:41 | 只看该作者
回复 支持 反对

使用道具 举报

该用户从未签到

8#
 楼主| 发表于 2010-10-16 01:12:13 | 只看该作者
请高手光临
回复 支持 反对

使用道具 举报

该用户从未签到

9#
 楼主| 发表于 2010-10-16 09:50:38 | 只看该作者
请高手进来帮忙解答疑问
回复 支持 反对

使用道具 举报

该用户从未签到

10#
发表于 2010-12-28 14:34:16 | 只看该作者
本帖最后由 婴儿 于 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. }
复制代码
远程的更麻烦,未尝试
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-17 17:22 , Processed in 0.077111 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表