51Testing软件测试论坛

标题: 参数化有问题 [打印本页]

作者: serena_meledy    时间: 2007-10-16 16:08
标题: 参数化有问题
脚本如下,其中事务名name参数化策略为“去当前group name”,为什么输出事务名时总是这样:Transaction {name} ended with Pass status (Duration: 0.0257).
也就是说事务名称为{name},而不是name的各个参数值。为什么?


=========================================
#include "as_web.h"

Action()
{   
lr_start_transaction("{name}");
  lr_message("transaction name is {name}");
lr_end_transaction("{name}", LR_AUTO);
return 0;
}

==========================================
作者: serena_meledy    时间: 2007-10-16 16:09
把参数类型改为file,编辑了参数表*.dat,为什么还是这个结果?55555
作者: Spark.lee    时间: 2007-10-16 17:19
标题: 因为就是这样的
所以你怎么改都是输出{name}这个事务名称
作者: 1qazse4    时间: 2007-10-16 17:43
呵呵,版主这是为什么啊?
   能说下原因?
作者: qiguojie    时间: 2007-10-17 09:01
用 lr_eval_string("{name}")试试,你的脚本替换如下:

#include "as_web.h"

Action()
{   
lr_start_transaction(lr_eval_string("{name}"));
lr_message("transaction name is %s",lr_eval_string("{name}"));
lr_end_transaction(lr_eval_string("{name}"), LR_AUTO);
return 0;
}

LR的参数引用有2种情况。。多做做就能搞明白了。。
楼主C语言基础多巩固一下,嘿嘿
作者: cuizhihui    时间: 2007-10-17 09:37
原帖由 qiguojie 于 2007-10-17 09:01 发表
用 lr_eval_string("{name}")试试,你的脚本替换如下:

#include "as_web.h"

Action()
{   
lr_start_transaction(lr_eval_string("{name}"));
lr_message("transaction name is %s",lr_eval_string("{name ...



元老能否说下两种参数引用的不同,及何种情况下使用哪种引用方法吗?  多谢了!~
作者: qiguojie    时间: 2007-10-17 09:51
3、参数值的引用方法
   参数值的引用分2种:一是直接引用,一个是使用lr_eval_string函数引用
   一、直接引用
       引用格式为:{参数名}
       一般在web_url、web_submit_data等函数体里使用,例如:
        lr_save_string("index.asp","url");
        lr_save_string("410","fid");
        lr_save_string("555","cid");
        web_url("{url}",
           "URL=http://192.168.5.113/bbs/{url}?theurl=http_Colon_//192.168.5.113/bbs/post.asp?fid={fid}_And_cid={cid}",
           "TargetFrame=",
           "Resource=0",
           "RecContentType=text/html",
           "Referer=",
           "Snapshot=t1.inf",
           "Mode=HTML",
           EXTRARES,
           "Url=images/gslt.gif", "Referer=http://192.168.5.113/bbs/top.htm", ENDITEM,
           LAST);
       通常,使用lr的参数替换功能形成的参数,格式都是这个。



    二、lr_eval_string()
       这个引用通常是在赋值和打印等操作中,用来引用形参所对应的实际值。
       例如:lr_save_string("这是实际值!","values");
             lr_message("实际值是:%s",lr_eval_string("{values}"));

具体文章,可以参考我的blog:http://www.51testing.com/?6343/action_viewspace_itemid_16481.html
作者: serena_meledy    时间: 2007-10-17 11:29
标题: to:5#
正解!今天我也发现这个问题了。
还有,谢谢您的参数值的引用方法。充分理解了
作者: serena_meledy    时间: 2007-10-17 11:33
我是这么理解的,不知道对不对:

如果把直接引用放到函数的attribute list里面,lr会把它当作参数、然后去匹配正确的值;
如果把直接引用放到其他的字符串里面(不是函数的attribute list:比如说定义一个字符串char *s="{name}",或者放到打印的函数里面),lr会不会把它当作参数匹配正确的值,而是直接当作静态字符串处理。
作者: serena_meledy    时间: 2007-10-17 11:34
反正,如果用到参数化的地方,两个方法总有一个适用。一个不行就用另一个。嘿嘿,不求甚解。
作者: qiguojie    时间: 2007-10-17 11:54
C函数的参数列表里直接引用是不可以的,为了验证,我写了一个例程:
=======================
int abc(char ps[],int a,int b)
{
        lr_message("%s,%d+%d = %d\n",ps,a,b,a+b);
        return 0;
}
Action()
{
        int i,j;
        lr_save_string ("运算结果","ps");
        for (i=0;i<10;i++)
        {
                for (j=10;j>0;j--)
                {
                   abc("{ps}是",i,j);
                }
        }
        return 0;
}
=============================
执行结果如下:
Starting action Action.
{ps}是,0+10 = 10
{ps}是,0+9 = 9
{ps}是,0+8 = 8
{ps}是,0+7 = 7
{ps}是,0+6 = 6
…………
{ps}是,9+6 = 15
{ps}是,9+5 = 14
{ps}是,9+4 = 13
{ps}是,9+3 = 12
{ps}是,9+2 = 11
{ps}是,9+1 = 10
Ending action Action.
作者: qiguojie    时间: 2007-10-17 11:55
估计只有LR的一些函数可以直接引用。。。:)
作者: cuizhihui    时间: 2007-10-17 11:55
原帖由 qiguojie 于 2007-10-17 09:51 发表
3、参数值的引用方法
   参数值的引用分2种:一是直接引用,一个是使用lr_eval_string函数引用
   一、直接引用
       引用格式为:{参数名}
       一般在web_url、web_submit_data等函数体里使用,例如:
   ...



太谢谢元老了!    俺要更加努力学习了!   




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2