狩猎者 发表于 2006-5-16 09:23:14

winrunner对变量的检查点设置(已解决)

比如,我录制一个windows自带的计算器计算加法,然后建立数据驱动,可我怎么知道每次计算的数值是不是正确呢??
录入数值和显示结果都是在一个框中,如何设计才可以检查计算结果是不是正确呢?

[ 本帖最后由 狩猎者 于 2006-5-22 09:22 编辑 ]

msky1025 发表于 2006-5-16 10:28:10

可以用pause()这个函数,作为调试来说很好用

狩猎者 发表于 2006-5-16 13:50:25

可以说具体点吗?我刚用不久。不太理解怎么用。谢谢了!

msky1025 发表于 2006-5-16 14:08:55

其实我也是新手,大家互相学习,举个简单的例子看解释得对不对
public n=2,m=5,z;
z=n+m;
pause(z);
这样在运行过程中到pause语句就会弹出对话框显示变量z的值

狩猎者 发表于 2006-5-16 15:44:48

和我说的意思不一样。
我的意思是:z=n+m,然后我们去检查z 是否计算的正确。
当然如果只是验证一个只要插入一个检查点,我的意思是,建立数据驱动后,面对多次的计算结果,如果验证每次计算的数值是不是正确

msky1025 发表于 2006-5-16 16:18:32

不好意思,理解错了
那把期望值建个表一一验证不就可以了吗

狩猎者 发表于 2006-5-16 17:34:04

呵呵,就是这个表怎么建立我不会,不知道怎么弄

你能教教我吗?谢谢了!!!!

zhenhaiou 发表于 2006-5-16 19:36:13

在数据驱动表中增加一列“结果“,与加数和被加数一一对应对应,呵呵

msky1025 发表于 2006-5-17 08:45:01

table="D:\\TABLE操作\\test001.xls";
rc=ddt_open(table);
if (rc==E_OK)
pause("can open table");
else
pause("can't open table");
ddt_get_row_count(table,RowCount);
for(Row=1;Row <= RowCount;Row ++)
{
line1=ddt_val_by_row(table,Row,"t1");
line2=ddt_val_by_row(table,Row,"t2");
line3=ddt_val_by_row(table,Row,"t3");
if(line1*line2==line3)
report_msg("line1="&line1",line2="&line2",line3="&line3",right.");
else
report_msg("line1="&line1",line2="&line2",line3="&line3",wrong.");
}
ddt_close(table);

借用的etheltim 代码
感觉这应该就是你想达到的效果

狩猎者 发表于 2006-5-17 09:11:33

感谢,感谢,我研究下,有问题再请教你啊!有msn吗?留个地址好吗?

狩猎者 发表于 2006-5-17 10:35:43

我在表中加入了结果列,但最后得到的结果都是第一列的数据结果,我看了数据驱动时,数值是按照设定循环的。
例如:执行了4+5=9,5+6=11,但结果信息是2个4+5=9。

msky1025 发表于 2006-5-17 14:27:36

我试了下可以实现的啊,是不是没包进循环,方便的话贴出代码看看

狩猎者 发表于 2006-5-17 15:59:34

table = "default.xls";
rc = ddt_open(table, DDT_MODE_READ);
if (rc!= E_OK && rc != E_FILE_OPEN)
        pause("Cannot open table.");
ddt_get_row_count(table,table_RowCount);
for(table_Row = 1; table_Row <= table_RowCount; table_Row ++)
{
        ddt_set_row(table,table_Row);
       
        # Shell_TrayWnd
                set_window ("Shell_TrayWnd", 4);
                button_press ("Start");
       
        # BaseBar
                set_window ("BaseBar", 11);
                toolbar_select_item ("ToolbarWindow32_1", "程序(P);附件;计算器");
       
        # 计算器
                win_type ("计算器",ddt_val(table, "t1") );
                set_window ("计算器", 0);
                obj_mouse_click ("Button_3", 9, 13, LEFT);
                obj_type ("Button_3",ddt_val(table, "t2") );
                obj_mouse_click ("Button_5", 30, 20, LEFT);
                obj_mouse_click ("Button_1", 34, 14, LEFT);
                win_close ("计算器");
        line1=ddt_val_by_row(table,Row,"t1");
    line2=ddt_val_by_row(table,Row,"t2");
    line3=ddt_val_by_row(table,Row,"t3");
if(line1*line2==line3)
report_msg("line1="&line1",line2="&line2",line3="&line3",right.");
else
report_msg("line1="&line1",line2="&line2",line3="&line3",wrong.");
}
ddt_close(table);


帮我看下吧,谢谢了!!

msky1025 发表于 2006-5-17 16:43:22

我现在的系统里面没有计算器,跑不了,你用pause测测变量取值后的情况,应该就能分析出问题
建议,发个短信问下生如火花,他比我强多了

狩猎者 发表于 2006-5-17 16:50:49

恩,好的, 谢谢了!
我先试试用pasue

狩猎者 发表于 2006-5-17 17:23:23

看了看TSL帮助,还是没明白,怎么用pasue测变量取值后的情况?:(

zhenhaiou 发表于 2006-5-18 09:59:22

原帖由 狩猎者 于 2006-5-17 15:59 发表
table = "default.xls";
rc = ddt_open(table, DDT_MODE_READ);
if (rc!= E_OK && rc != E_FILE_OPEN)
        pause("Cannot open table.");
ddt_get_row_count(table,table_RowCount ...


你这个程序没有判断结果阿

table = "default.xls";
rc = ddt_open(table, DDT_MODE_READ);
if (rc!= E_OK && rc != E_FILE_OPEN)
      pause("Cannot open table.");
ddt_get_row_count(table,table_RowCount);
for(table_Row = 1; table_Row <= table_RowCount; table_Row ++)
{
      ddt_set_row(table,table_Row);
      
      # Shell_TrayWnd
                set_window ("Shell_TrayWnd", 4);
                button_press ("Start");
      
      # BaseBar
                set_window ("BaseBar", 11);
                toolbar_select_item ("ToolbarWindow32_1", "程序(P);附件;计算器");
      
      # 计算器
                win_type ("计算器",ddt_val(table, "t1") );
                set_window ("计算器", 0);
                obj_mouse_click ("Button_3", 9, 13, LEFT);
                obj_type ("Button_3",ddt_val(table, "t2") );
                obj_mouse_click ("Button_5", 30, 20, LEFT);
                obj_mouse_click ("Button_1", 34, 14, LEFT);

               #从计算器的结果显示框中取得结果,保存为test
               obj_get_text ( object, out_text [, x1, y1, x2, y2 ] )或者edit_get_text ( edit, out_string );
                win_close ("计算器");
      line1=ddt_val_by_row(table,Row,"t1");
    line2=ddt_val_by_row(table,Row,"t2");



    line3=ddt_val_by_row(table,Row,"t3");

#判断结果
if(line3 == test)

report_msg("line1="&line1",line2="&line2",line3="&line3",right.");
else
report_msg("line1="&line1",line2="&line2",line3="&line3",wrong.");

}
ddt_close(table);

生如火花 发表于 2006-5-18 10:12:25

说实在的,XLS表的处理我现在也忘的差不多了。楼主的想法应该是验证结果是不是正确。如果是确定的数据计算(非随机的)应该是可以做到从一个表中取得期望的结果和实际结果对比。

狩猎者 发表于 2006-5-18 10:56:07

对,对!就是生如火花版主的意思!谢谢大家的帮助!!
我脚本现在的问题就是,它只验证,xls表中第一行的数据,剩下的无法验证。
比如我有3行数据,最后出来的结果是3行都通过了,但都是第一行的数据。

[ 本帖最后由 狩猎者 于 2006-5-18 11:38 编辑 ]

狩猎者 发表于 2006-5-18 15:56:00

哈哈,问题总算解决了!感谢大家的帮助!
页: [1] 2
查看完整版本: winrunner对变量的检查点设置(已解决)