Reusable action with query database

Reusable action with query database

 

      有两个Action,要实现如下图所示的逻辑,即在Action1中调用queryDB,以实现在Action1中可以只要通过参数就可以进行业务操作,而公用的方法则写入queryDB中。类似的queryDB既可以在本脚本中来调用,也可以在不同的脚本中进行调用。要实现这样的功能,可以利用Action的Reusable action功能。     为了实验,我采用了Oracle数据库及表c_cons。通过输入参数用户编码:cons_no,来实现调用queryDB来查询出用户标识:cons_id。

     1、建立两个Action,分别命名为Action1、queryDB,其中queryDB的Reusable action框勾选上,表示queryDB这个Action可以被重用。

     2、在queryDB这个Action中定义输入参数及输出参数。如图所示:

Reusable action with query database

      3、切换到Action1中,进行对queryDB的调用。可以右键,在弹出框中选择”Insert Call to Existing….”,出现Select Action 对话框,如下图所示。在Action中选择要插入的Action即queryDB,Location选项中选择”After the current step” 选项。

Reusable action with query database

      点击【OK】按钮,即可插入。同时在专家试图中显示脚本为:

RunAction "queryDB", oneIteration

为了实现输入参数来查询结果,需定义一个保留返回值的变量,returnconsid,并输入参数cons_no为3095646333。脚本如下所示:

Dim returnconsid

RunAction "queryDB", oneIteration,"3095646333",returnconsid

msgbox returnconsid

4、插入调用后,我们就可以在queryDB中写相关的业务逻辑操作了。具体的实现代码如下所示:

Dim res,cmd,sql

Set res=createobject("adodb.recordset")

Set cmd=createobject("adodb.command")

Rem 连接数据库

Dim Connstring

Connstring="Provider=OraOLEDB.Oracle.1;Password = sgpm31 ;Persist Security Info=True; User ID  = sgpm ; Data Source = CIS31 ; Server = 172.19.2.31"

Cmd.activeconnection= Connstring

rem 查询语句

sql="select cons_id from c_cons where cons_no='"&parameter("cons_no")&"'"

Cmd.CommandText=sql

Set res=Cmd.Execute()

If res.EOF And res.BOF Then

       res.Close

       Reporter.ReportEvent micFail,"test","查询失败"

       parameter("cons_id")="unknown"

       else

       rem CSTR转换成字符串

       If Cstr(res(0))<>"" Then

                       Dim returnconsid

                       returnconsid=Cstr(res(0))

                       Reporter.ReportEvent micPass,"test","查询成功,"&parameter("cons_no")&"的标识是"&returnconsid

                       parameter("cons_id")=Cstr(res(0))

       end if

End If

Set res=nothing

Set Cmd.activeconnection=nothing

Set Cmd=nothing

这样整个脚本就实现了我们预期的要求,运行脚本能够得到我们需要的结果。

      注:类似queryDB这样的Action可以作为一个公用的Action,当然queryDB中的脚本完全可以作为一个公共函数来调用,我们这里这样做只是为了介绍QTP中Action的Reusable action功能。若需要在不同的脚本中调用这个queryDB,可以在Select Action 对话框中选择queryDB所在脚本的位置即可。如下图所示:

Reusable action with query database

你可能感兴趣的:(database)