在globals.h中定义方法:

方法:
  1、将生成GUID方法放在新建的GUID.h文件中;
  2、把这个文件放入脚本保存处;
  3、在globals.h中增加函数头“#include "GUID.h"”;
  4、直接引用(备注:如果要将生成的GUID
  作为请求参数,必须先用lr_save_string函数转换成LoadRunner能识别的参数,否则无法使用)

char* lr_guid_gen(char* paramName){                         //生成GUID方法

typedef struct _GUID    {

unsigned long Data1;

unsigned short Data2;

unsigned short Data3;

unsigned char Data4[8];

} GUID;

GUID m_guid;

char buf[50];

char pNameStr[50];

CoCreateGuid(&m_guid);

// 定义输出格式

//sprintf (buf, "{%08lX-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02X}", // 大写

sprintf (buf, "{%08lx-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x}",// 小写

//sprintf (buf, "%08lX%04X%04X%02X%02X%02X%02X%02X%02X%02X%02X",// 小写

m_guid.Data1, m_guid.Data2, m_guid.Data3,

m_guid.Data4[0], m_guid.Data4[1], m_guid.Data4[2], m_guid.Data4[3],

m_guid.Data4[4], m_guid.Data4[5], m_guid.Data4[6], m_guid.Data4[7]);

lr_save_string(buf, paramName);

sprintf(pNameStr,"{%s}",paramName);

return lr_eval_string(pNameStr);

}

在Action中调用该方法:

char *test;

lr_load_dll("ole32.dll");      //引用windows生成GUID的API

test=lr_guid_gen("GUID");      //调用上面lr_guid_gen()方法

lr_save_string(test,"GUID");

lr_output_message(test);

lr_output_message("xxxxxxxxxxxxx:%s",lr_eval_string("{GUID}"));

另外一种方法:

LUID就是指locally unique identifier,GUID/UUID大家是比较熟悉的,和GUID/UUID的要求保证全局唯一不同,LUID只要保证局部唯一,就是指在系统的每一次运行期间保证是唯一的就可以了。    灵感来自:LoadRunner生成唯一数 + LoadRunner实现:计算字符串Md5 。
原理非常简单,先生成唯一字符串,然后算Md5。以下代码就是在Md5的基础上稍稍加工一下:
void Md5toLUID(char* inStr,char *outStr)
{
int i;
strncpy(outStr,inStr,8);
strcat(outStr,"-");
for (i=9;i<13;i++)
outStr=inStr[i-1];
strcat(outStr,"-");
for (i=14;i<18;i++)
outStr=inStr[i-2];
strcat(outStr,"-");
for (i=19;i<23;i++)
outStr=inStr[i-3];
strcat(outStr,"-");
for (i=24;i<37;i++)
outStr=inStr[i-4];
strcat(outStr,"\0");
} 调用方法:
void main()
{
char uStr[33],lStr[37];
int i; for (i=0;i<10;i++) {
lr_save_int(i,"iValue");
GetUniqueString(lr_eval_string("{iValue}"),uStr);
GetMd5FromString(uStr,uStr);
Md5toLUID(uStr,lStr);
lr_output_message(lStr);
}
} 输出:
main.c(18): b7f163a8-f89c-59e3-6705-a3823a358c0d
main.c(18): 20fcb7ab-0879-9572-fb5b-5c9848b37930
main.c(18): 869b718d-126c-eaeb-b099-b1ec15d3c9db
main.c(18): fd12c050-0975-3641-1de9-3685431d4a01
main.c(18): 604bbc51-e787-1955-d721-ee5032640629
main.c(18): 4fffdc48-0c44-66c9-34d7-697e473d20da
main.c(18): a5d0d30c-5053-03e8-6e1a-1f112ef49007
main.c(18): 4babb152-de2f-1136-d4a6-8aa78a90f2c7
main.c(18): 833f6f33-da3d-efeb-7ec8-95f5491bf1a1
main.c(18): 89148aad-8040-e70c-b406-69d56f570293
测试的时候这个LUID,就可以当成GUID/UUID使用了。除非同时使用了多个Contorller而且脚本组名也相同,而且即使是如此,取到重复值的机率也非常小!
函数就是在拼接“-”到指定位置,平常用得更多的是字符串替换:C语言实现:替换字符串中指定字符 。

loadrunner生成随机uuid的方法的更多相关文章

  1. [三卷天书]记一个asp.net生成两个日期范围内生成随机时间的方法

    想网上找个生成随机天数的方法找不到,后面只得自己写了,贴给大家方便使用 思路:算两个日期的相差天数,然后在0到相差天数的范围内生成随机数,再用结束时间的天数部分减去这个随机数,代码: /// < ...

  2. Python生成随机数组的方法小结

    Python生成随机数组的方法小结 本文实例讲述了Python生成随机数组的方法.分享给大家供大家参考,具体如下: 研究排序问题的时候常常需要生成随机数组来验证自己排序算法的正确性和性能,今天把Pyt ...

  3. 生成随机uuid

      /**  * 生成随机uuid  */ export function uuid() {   return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.repla ...

  4. Java中生成随机字符的方法总结

    package learnExercise; public class RandomCharacter { public static char getRandomCharacter(char ch1 ...

  5. Python生成短uuid的方法

    python的uuid都是32位的,比较长,处理起来效率比较低, 本算法利用62个可打印字符,通过随机生成32位UUID,由于UUID都为十六进制,所以将UUID分成8组,每4个为一组,然后通过模62 ...

  6. loadrunner生成随机身份证和银行卡号

    生成银行卡号码: Action() { char card[19] = {'6','2','2','7','0','0','0','0','0','0','0','0','0','0','0','0' ...

  7. Python_生成随机百分比的方法

    可以使用random模块去实现,给定1到100的空间,使用random的choice的方法随机选取一个数字,当这个数字在某个区间时就可以认定为出发了指定的百分比的概率. 这个简单的逻辑也可以在需要时扩 ...

  8. loadrunner 生成随机参数 Radom相关

    我也是刚开始进入测试行业,不过比较幸运的我之前做过开发,所以对代码比较熟悉,对loadrunner没有进行过系统的学习,也是通过自己的摸索慢慢的积累知识. 今天遇到项目中要我做一个压力测试,其中一些参 ...

  9. PostgreSQL: 一种用于生成随机字符串的方法

    create or replace function random_string(integer) returns text as $body$ select array_to_string(arra ...

随机推荐

  1. 用python的turtle画图

    画5个红色的同心圆代码如下: import turtle turtle.pencolor("red") # 设置画笔的颜色 turtle.pensize() # 设置画笔的宽度 t ...

  2. Linux下安装python-2.7 先zlib

    2018-04-25 发布 Linux下安装python-2.7  python 1.1k 次阅读  ·  读完需要 25 分钟 1 安装依赖的库 yum -y install python-deve ...

  3. McNemar test麦克尼马尔检验

    sklearn实战-乳腺癌细胞数据挖掘(博主亲自录视频) https://study.163.com/course/introduction.htm?courseId=1005269003&u ...

  4. libuv的多线程之间传递消息

    官网上给出的例子http://nikhilm.github.io/uvbook/threads.html#inter-thread-communication,中文理解在后边 Inter-thread ...

  5. BZOJ2588:LCA+主席树来实现树上两点之间第K大点权查询

    对于每个节点维护这个节点到根的权值线段树 对于每个询问(x,y),这条路径上的线段树 tree[x]+tree[y]-tree[lca(x,y)]-tree[fa[lca(x,y)]] #includ ...

  6. HDU 5144 三分

    开始推导用公式求了好久(真的蠢),发现精度有点不够. 其实这种凸线上求点类的应该上三分法的,当作入门吧... /** @Date : 2017-09-23 21:15:57 * @FileName: ...

  7. HDU 3507 单调队列 斜率优化

    斜率优化的模板题 给出n个数以及M,你可以将这些数划分成几个区间,每个区间的值是里面数的和的平方+M,问所有区间值总和最小是多少. 如果不考虑平方,那么我们显然可以使用队列维护单调性,优化DP的线性方 ...

  8. sql分页demo

    ALTER proc [dbo].[ProcGetUserInfoPageInfoByUserName] ), @PageIndex int, @PageSize int as Begin selec ...

  9. 从零搭建SSM框架(四)手动实现Tomcat部署

    发布War包 Windows环境部署 增加如下配置 <Context path="/" docBase="cnki" debug="0" ...

  10. json属性名为什么要双引号?

    原因一: 更加规范,利于解析 原因二: 避免class等关键字引起的不兼容问题 原因三: 可能也是最隐晦的: var a = 00; var b = {00: 12}; a in b; --> ...