事务创建函数

事务创建函数

  • int lr_start_transaction(const char * transaction_name)

  • int lr_end_transaction(const char * transaction_name,int status)

  • lr_start_sub_transaction(const char * transaction_son_name,const char * transaction_father_name)

  • lr_end_sub_transaction(const char * transaction_son_name,int status)

transaction_name:事务名称 

status:事务结束状态,共有4种状态。 

transaction_son_name :子事务名称 

transaction_father_name:父事务名称 

注意:子事务和父事务很像,但是父事务支持的很多函数在子事务中都无法实现,所以应酌情考虑。

LRPASS (通过)

指事务的状态由系统自动根据默认规则来判断,结果为PASS/FAIL/STOP 
LR_AUTO也是根据服务器的返回状态信息来决定事务是以LR_PASS状态通过还是以LR_FAIL状态结束,只要服务器返回页面,那么事务就会认为请求成功发出去了,服务器看懂了请求也返回了内容,自然事务就是PASS状态。 
这样由于事务的自动判断,导致虽然操作失败的,但是得到了一个响应时间,并且这个响应时间又没正确反映出做这件事情的真正时间,最终影响测试结果。添加检测函数有时候可以解决这个问题

LR-FAIL (失败)

指事务是以PASS状态通过的,说明改事务正确地完成了,并且记录下对应的时间,这个时间就是指做这件事情所需要消耗的时间。

LR-AUTO (自动)

LR_FAIL是指事务以FAIL状态结束,该事务是一个失败的事务,没有完成事务中脚本应该达到的效果,得到的时间不是正确操作的时间,这个时间在后期的统计中将被独立统计。

LR-STOP (暂停)

LR_STOP将事务以STOP状态停止。

说明:

事务的PASS和FAIL状态会在场景的对应计数器中记录,包括通过的次数和事务的响应时间,方便后期分析改事务的吞吐量以及响应时间的变化情况 

其中LRAUTO的默认值是LR-PASS,可以在事务结束前通过Ir-set transaction status进行修改。 

如果在Ir-end-transaction中没有指定事务的结束状态是LR-AUTO,而 ,是明确指定为LR-PASS. LR-FAIL, LRSTOP中的一种,则事务将以最后指定的状态来结束。 

须要注意的是,当使用Ir-start-transaction开始一个事务后,其后面的脚本中不可以再干始同名称的事务,除非这个事务已经通过Ir-end-transaction结束。

Action2()

{

    lr_start_transaction("login");

 

    //打开登录界面

    web_url("WebTours",

        "URL=http://127.0.0.1:1080/WebTours/",

        "Resource=0",

        "RecContentType=text/html",

        "Referer=",

        "Snapshot=t16.inf",

        "Mode=HTML",

        LAST);

 

    lr_think_time(4);

 

    //注意函数的位置

    // jojo1为要查找的文本(实际文本如上图,jojo,仅在登录后才出现,这里为了演示故意找不存在的文本)

web_reg_find("Search=Body", "SaveCount=login_times", "Text=jojo1", LAST);

 

    //提交登录页面的表单

    web_submit_form("login.pl",

        "Snapshot=t17.inf",

        ITEMDATA,

        "Name=username", "Value=jojo", ENDITEM,

        "Name=password", "Value=bean", ENDITEM,

        "Name=login.x", "Value=0", ENDITEM,

        "Name=login.y", "Value=0", ENDITEM,

        LAST);

 

    lr_think_time(4);

   

    if(atoi(lr_eval_string("{login_times}")) >= 1) {//找到“jojo”,说明登录成功

        lr_end_transaction("login", LR_PASS);}

    else{  //未找到,说明登录失败


    lr_end_transaction("login", LR_FAIL);} 

    return 0;

}

 

原文地址:https://www.cnblogs.com/lvchengda/p/12624857.html