LoadRunner之VuGen参数化

一、什么是参数化

概念:根据需求动态的获取数据的过程

二、为什么要参数化?

1. 减少重复代码
2. 数据代码进行分离,方便维护

需求1

说明:由于虚拟机运行速度原因,我们使用lr_output_message()函数练习学习使用参数化
要求:
    1. 输出 我要去北京;我要去上海;我要去广州;我要去深圳;

三、参数化操作

3.1 打开参数化菜单

 

选中要参数化的文本->鼠标右键->Replace with a Parameter
或者
菜单【Insert】>【New Parameter...】

3.2 Replace with a Parameter 打开的窗口

 

1. Parameter name:参数化引用名称(参数化时使用)
2. Parameter type:File 【推荐-File】
3. Properties:属性-点击此按钮,可直接设置参数化引用名称对应的值;【点击】

提示:
    1). 点击OK;参数化引用名称具体的值,需要再次设置;

3.3 Properties 设置面板

 

1. Parameter type: 参数类型 File 【重点】
2. File:参数保存的文件类型及位置,一般为txt;【推荐】
3. Add Row:添加行,在当前表格编辑数据;【可选】
4. Edit with Notepad:在记事本内编辑数据;【推荐】
5. Select next row:运行或迭代时对行的选择方式 
    1). 
6. Update value on:运行或迭代时对值的选取方式

提示:
    1). Select next row与Update value on为组合关系,不同组合效果不同,我们单独来学习

需求1 解决方案

1. 创建指定路径及txt文本格式 如:C:\lr11\scripts\city.txt
2. 使用Edit with Notepad 编辑数据:北京、上海、广州、深圳
3. 编写脚本 
4. 迭代次数 4

问题:如何把设置好的参数读取打印出来?

为了更好学习使用参数化,我们必须先了解个函数

函数:lr_eval_string() 

为什么要了解lr_eval_string()函数?

1. lr_output_message(“str”):函数为把str字符串输出到日志,它自身并不能解析读取参数。
2. 为了日志记录详细我们必须学习个能读取参数,在通过lr_output_message()函数来输出到日志

函数 lr_eval_string()

功能:读取变量的值,并以Char类型返回
示例:
    lr_eval_string("{parameter}")
提示:
    1). 参数名称使用花括号{}包括
    2). 参数使用双引号包括

需求1 代码示例

1. 代码:
    Action()
    {
        lr_output_message("我要去%s",lr_eval_string("{NewParam}"));
        return 0;
    }

 

3.4 Select next row与Update value on

Select next row(选择下一行)

说明:读取参数文件行的方式
方式:
    1. Sequential:顺序,按照行的顺序读取数据,如果迭代次数大于行数,再次从第一行开始读取
    2. Random:随机,随机读取行
    3. Unique:唯一,每次读取唯一行,不重复;如果行数读完,立即停止迭代;

Update value on(更新值的时间)

说明:参数值更新的方式
方式:
    1. Each iteration:每次迭代以后更新
    2. Each occurrence:每次出现参数时更新
    3. Once:每出现一个虚拟用户(线程)更新一次

组合

1. 行顺序+每次迭代更新值     Sequential + Each iteration
2. 行顺序+每次参数出现更新值     Sequential + Each occurrence
3. 行顺序+更新一次(单用户)    Sequential + Once

说明:
    1. 组合我们在这里就不穷举了,以行的顺序配合值的3中更新方式做演示
    2. 因为组合内含occurrence,所以必须要两个Action,我们新增两个(Action、Action2)两个代码相同

代码

Action()
{
    lr_output_message("我要去%s",lr_eval_string("{NewParam}"));
    return 0;
}
Action2()
{
    lr_output_message("我要去%s",lr_eval_string("{NewParam}"));
    return 0;
}

Sequential + Each iteration

说明:行为顺序,值为迭代更新一次;
预期:
    1. 第一次迭代:Action:北京;Action2:北京
    2. 第二次迭代:Action:上海;Action2:上海
    3. 第三次迭代:Action:广州;Action2:广州
    4. 第四次迭代:Action:深圳;Action2:深圳

Sequential + Each occurrence

说明:行为顺序,值为出现一次更新一次
预期:
    1. 第一次迭代:Action:北京;Action2:上海
    2. 第二次迭代:Action:广州;Action2:深圳
    3. 第三次迭代:Action:北京;Action2:上海
    4. 第四次迭代:Action:广州;Action2:深圳

Sequential + Once

说明:行为顺序,值为单用户只更新一次
预期:
    1. 第一次迭代:Action:北京;Action2:北京
    2. 第二次迭代:Action:北京;Action2:北京
    3. 第三次迭代:Action:北京;Action2:北京
    4. 第四次迭代:Action:北京;Action2:北京

选择下一行中的Same line as xxx的使用方式:

(1)创建username1,添加数据

 (2)创建password1,文件路径为username1的路径,添加密码数据,关联username1列

username1中的数据得到更新

 代码:

Action()
{
	//参数化
	//lr_output_message("%s",lr_eval_string("{city}加油"));
	
	// 两列关联使用
	lr_output_message("用户名为:%s",lr_eval_string("{username1}"));
    lr_output_message("密码为:%s",lr_eval_string("{password1}"));
	return 0;
}

运行为:

Action.c(7): 用户名为:dpl
Action.c(8): 密码为:12132
Action.c(7): 用户名为:ddd
Action.c(8): 密码为:12313
Action.c(7): 用户名为:jojo
Action.c(8): 密码为:41244
Vuser Terminated.

扩展 批量获取参数时,如果保证参数不重复?

思路:添加时间戳
说明:web_save_timestamp_param("time_stamp",LAST) 为时间戳函数,返回:1970到现在的毫秒数;
      (time_stamp:参数为获取值后保存的参数名称,被引用时使用)

代码

Action()
{
	//参数化
	//lr_output_message("%s",lr_eval_string("{city}加油"));
	
	// 两列关联使用
	lr_output_message("用户名为:%s",lr_eval_string("{username1}"));
    lr_output_message("密码为:%s",lr_eval_string("{password1}"));
    //添加时间戳
	web_save_timestamp_param("time_stamp",LAST);
	lr_output_message("时间为:%s",lr_eval_string("{time_stamp}"));
	return 0;
}

 运行结果为:

Action.c(7): 用户名为:dpl
Action.c(8): 密码为:12132
Action.c(11): 时间为:1580013750556
Action.c(7): 用户名为:ddd
Action.c(8): 密码为:12313
Action.c(11): 时间为:1580013750651
Action.c(7): 用户名为:jojo
Action.c(8): 密码为:41244
Action.c(11): 时间为:1580013750702
Vuser Terminated.

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值