LoadRunner获取毫秒及字符串替换实现

发表于:2015-5-26 10:29

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:Agoly    来源:51Testing软件测试网采编

  今天做一个性能测试,参数化要求创建用户名不可以重复,想来想不没有什么好的办法来避免用户名字的重复。所以就想用时间+随机数来实现,但是实现中遇到一个问题。
  名字中不可以包含.这个特殊的字符的。所以要处理一下.字符串,于是就想一个C语言实现的字符串替换函数。loadrunner默认没有字符串替换函数,不知道为什么不做呢?
  (1)毫秒实现方法
  通过创建date/time参数,设置格式为:%Y%m%d%H%M%S.000
  (2)替换字符串函数
char *strreplace(char *dest, char *src, const char *oldstr, const char *newstr, size_t len)
{
/* @param char* dest 目标串,也就是替换后的新串
* @param const char* src 源字符串,被替换的字符串
* @param const char* oldstr 旧的子串,将被替换的子串
* @param const char* newstr 新的子串
* @param int len 将要被替换的前len个字符*/
//子串位置指针
char *needle;
//临时内存区
char *tmp;
//如果串相等,则直接返回
if(strcmp(oldstr, newstr)==0){
return src;
}
//把源串地址赋给指针dest,即让dest和src都指向src的内存区域
dest = src;
//如果找到子串, 并且子串位置在前len个子串范围内, 则进行替换, 否则直接返回
while((needle = (char *) strstr(dest, oldstr)) && (needle -dest <= len)){
//分配新的空间: +1 是为了添加串尾的'\0'结束符
tmp=(char*)malloc(strlen(dest)+(strlen(newstr)-strlen(oldstr))+1);
//把src内的前needle-dest个内存空间的数据,拷贝到arr
strncpy(tmp, dest, needle-dest);
//标识串结束
tmp[needle-dest]='\0';
//连接arr和newstr, 即把newstr附在arr尾部, 从而组成新串(或说字符数组)arr
strcat(tmp, newstr);
//把src中 从oldstr子串位置后的部分和arr连接在一起,组成新串arr
strcat(tmp, needle+strlen(oldstr));
//把用malloc分配的内存,复制给指针retv
dest = (char *)strdup(tmp);
//释放malloc分配的内存空间
free(tmp);
}
  (3)验证函数可用性
Action()
{
char *str=lr_eval_string("{Hm}");
char *old="\.";
char *new="";
char *dest;
lr_error_message("%s\n",strreplace(dest, str, old, new,20));
return 0;
}
  输出的格式为:Action.c(58): Error: 20130827153554665
  经过上面的实现后,基本可以实现登录用户名不重复的现象了。OK!!!
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号