软件测试中LoadRunner函数中的几个陷阱
软件测试 中 LoadRunner 函数中的几个陷阱 1、atof 在 loadrunner 中如果直接用 float f; f=atof("123.00"); lr _output_message("%f",f); 输出的结果会是1244128.00,根本不是我们想要的。 因为float,double型在不同的平台下长度不一样,所以在loadrunner
软件测试中LoadRunner函数中的几个陷阱
1、atof
在loadrunner中如果直接用
float f;
f=atof("123.00");
lr_output_message("%f",f);
输出的结果会是1244128.00,根本不是我们想要的。
因为float,double型在不同的平台下长度不一样,所以在loadrunner中调用atof需要显式的声明这个函数。
如下:
doubleatof (const char *string);
float f;
f=atof("123.00");
lr_output_message("%.2f",f);
这样就能输出结果:123.00。
其实,在LR关于atof的帮助文档描述中有提到这点,要求使用这个函数前“must be explicitly declared in Vugen scripts. ”,同样的要求也出现在atol函数的描述中。
2、lr.save_string
在LoadRunner中,使用.NET VUser时可以使用lr.save_string来存入一个变量,但是其使用方法却与通常使用的lr_save_string有区别,不小心的话容易“中招”。
C语言的lr_save_string的定义如下:
int lr_save_string (const char *param_value, const char *param_name);
注意:参数值在前面,参数名在后面
而.NET VUser的lr.save_string的参数使用恰好相反,参数名在前面,参数值应该放到后面。
但是LR的帮助文档并没有关于lr.save_string的定义,如果在脚本中选中“lr.save_string”,然后按F1,则直接蹦到lr_save_string的定义描述中,极容易误导人!
3、ftp_put
ftp_put 是LoadRunner中的FTP函数,用于上传文件到FTP服务器。定义如下:
int ftp_put ( char *transaction, LAST);
查看LR的帮助文档可获得如下例子:
// Send the file "ftp_file.txt" to the for_jon directory.
ftp_put("Ftp_Put",
"PATH=f:/ftp_file.txt", "TARGET_PATH=/pub/for_jon", "MODE=ASCII",
ENDITEM ,
LAST);
当你兴匆匆地以为拿过来修改一下就可以用了的时候,LR却提示如下错误:
Starting action Action.
globals.h(101): Warning message:PATH=D:/ftp.txt is not ftp_put valid option
globals.h(101): Debug message:Putting file test.txt in /Qdownload/test.txt, passive mode set to 0
globals.h(101): Error -86026:Failed to open D:\LoadRunner\LRProject\lr_FTP1\test.txt for reading.
globals.h(101): Error -86027:Failed to put data: 226 Transfer complete
Abort was called from an action.
提示错误是文件不能读,但是文件明明就不在错误所提示的D:\LoadRunner\LRProject\lr_FTP1\test.txt 中,而是在D:/ftp.txt。
后来看到错误提示之前的一个Warning写道PATH=D:/ftp.txt is not ftp_put valid option,难道错误是这里引起的?查看帮助文档关于item_list的描述可知:
item_list
A list of all the items for this function. Enclose all entries with quotes.
SOURCE_PATH: The file to upload to the FTP server.
OR
MSOURCE_PATH - Like SOURCE_PATH, but using wildcards to specify multiple files. If wildcards are not specified, all the files in the MSOURCE_PATH are uploaded.
TARGET_PATH (optional) - the path and filename in which to place the file.
if (M)SOURCE_PATH is specified, but TARGET_PATH is not specified, the file is stored in the root directory of the FTP server, with the original file name.
MODE (optional) - Retrieval mode ASCII or BINARY (default).
PASSIVE (optional) - Sets the communication protocol to Passive Mode FTP. To enable, pass "PASSIVE=TRUE".
ENDITEM - Marks the end of the list. (no quotes)
原来是SOURCE_PATH而不是例子所说的PATH,好吧,等你改成SOURCE_PATH后,如下所示:
// Send the file "ftp_file.txt" to the for_jon directory.
ftp_put("Ftp_Put",
"SOURCE_PATH=f:/ftp_file.txt", "TARGET_PATH=/pub/for_jon", "MODE=ASCII",
ENDITEM ,
LAST);
兴匆匆地以为就行了,一运行又报错:
globals.h(101): Error -86025:Put failed; 550 /pub/for_jon: Not a regular file
原来这次是TARGET_PATH的问题,再看LR的帮助文档:
TARGET_PATH (optional) - the path and filename in which to place the file.
if (M)SOURCE_PATH is specified, but TARGET_PATH is not specified, the file is stored in the root directory of the FTP server, with the original file name.
原来TARGET_PATH要包含文件名,因此改成:
// Send the file "ftp_file.txt" to the for_jon directory.
ftp_put("Ftp_Put",
"SOURCE_PATH=f:/ftp_file.txt", "TARGET_PATH=/pub/for_jon/ftp_file.txt", "MODE=ASCII",
ENDITEM ,
LAST);
这次终于行了。
同样的,在ftp_put_ex函数中也有类似的错误:
In the following example, the ftp_get_ex function gets the file ftp_file.txt from the FTP server.
// Send the file "ftp_file.txt" to the for_jon directory.
ftp_put_ex(&ftp, "Ftp_Put",
"PATH=f:/ftp_file.txt", "TARGET_PATH=/pub/for_jon", "MODE=ASCII",
ENDITEM,
LAST);
而且例子代码写的是“ftp_put_ex”, 描述例子时却说的是“ftp_get_ex”。
软件测试中LoadRunner函数中的几个陷阱的更多相关文章
- eclipse 中main()函数中的String[] args如何使用?通过String[] args验证账号密码的登录类?静态的主方法怎样才能调用非static的方法——通过生成对象?在类中制作一个方法——能够修改对象的属性值?
eclipse 中main()函数中的String[] args如何使用? 右击你的项目,选择run as中选择 run configuration,选择arguments总的program argu ...
- linux中probe函数中传递的参数来源(上)
点击打开链接 上一篇中,我们追踪了probe函数在何时调用,知道了满足什么条件会调用probe函数,但probe函数中传递的参数我们并不知道在何时定义,到底是谁定义的,反正不是我们在驱动中定义的(当然 ...
- js中在一个函数中引用另一个函数中的函数,可以这么做
在另一个函数中,将需要使用的函数绑定在window下 // UEditor $(function () { window.ue = UE.getEditor('editor', { // ue即可成为 ...
- 苹果浏览器Safari对JS函数库中newDate()函数中的参数的解析中不支持形如“2020-01-01”形式
苹果浏览器safari对new Date('1937-01-01')不支持,用.replace(/-/g, "/")函数替换掉中划线即可 如果不做处理,会报错:invalid da ...
- JNI中GetStringChars函数中的isCopy
一直不明白这个isCopy是什么意思,只知道每次使用的时候都传NULL,今天看到了相关的资料,特来分享下. 当从JNI函数GetStringChars中返回得到字符串B时,如果B是原始字符串java. ...
- Javascript中的函数中的this值
看下面这段代码会在控制台上输出什么内容? <script> var url="fang.com"; var obj={ url:"soufun.com&quo ...
- MYSQL中group_concat( )函数中参数的排序方法
使用mysql中的group_concat( )函数连接指定字段时,可以先对该字段进行排序. PS:是因为二刷mysql的51道题的第12题遇到的:查询和" 01 "号同学学习的课 ...
- 继承过程中对函数中this的认识
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 10.Python中print函数中中逗号和加号的区别
先看看print中逗号和加号分别打印出来的效果.. 这里以Python3为例 1 print("hello" + "world") helloworld 1 p ...
随机推荐
- 洛谷——P1223 排队接水
P1223 排队接水 题目描述 有n个人在一个水龙头前排队接水,假如每个人接水的时间为Ti,请编程找出这n个人排队的一种顺序,使得n个人的平均等待时间最小. 输入输出格式 输入格式: 输入文件共两行, ...
- SecureFXPortable中文乱码
SecureFXPortable有一个非常奇怪的地方,明明在全局选项中已经将编码设置为UTF-8,但连接Linux还是会出现中文乱码. 后来发现这个全局选项竟然不对SecureFXPortable生效 ...
- phonegap安卓视频播放解决方案
使用phonegap开发的时候,视频播放很多人一开始选择用html5的Video标签作为备选方案,实际上这种方案在真实环境下常常是无法满足需求的,因为目前HTML5的Video标签只支持MP4,OGG ...
- import 和 export -- ES6
例子: 最后返回的结果是: { default: function fn2(){ }, foo2: 1, test3: { default: function fn3(){ }, foo3: 1 } ...
- 【图论】Popular Cows
[POJ2186]Popular Cows Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 34752 Accepted: ...
- [ARC062F]Painting Graphs with AtCoDeer
题意:一个无向图,用$k$种不同的颜色给每条边染色,问能染出多少种不同的图,如果两张图能通过循环移位环边使得颜色相同,那么这两张图被认为是相同的 数学太差伤不起啊...补了一下Burnside定理的证 ...
- 【最短路】【spfa】CDOJ1633 去年春恨却来时,落花人独立,微雨燕双飞
对于S集合中的数,例如a1,考虑到如果x能够被表示出来,那么x+a1也一定能被表示出来 设d[r]为所有模a1余r的数中,能被表示出来的最小的数 用d[x]+ai去更新d[(x+ai)%a1],跑最短 ...
- BUG:upstream timed out (10060: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected
更换Apache扑向Nginx,刚搭建完WNMP,nginx能访问php页面 但是访问现有开发项目报错 [error] 4112#3724: *9 upstream timed out (10060: ...
- CentOS 6.9下双网卡绑定单个IP地址及装网卡绑定到一个网桥(转)
说明:经过查阅,原来双网卡绑定一个IP的专业名词叫做bond,可以实现负载均衡:如果想要实现两张网卡绑定到一个网桥,基本思路是两张网卡设置同一个网桥是行不通的,但如果先实现bond,然后将bond绑定 ...
- python多线程以及同步队列(转)
转自:http://www.w3cschool.cc/python/python-multithreading.html 多线程类似于同时执行多个不同程序,多线程运行有如下优点: 使用线程可以把占据长 ...