winrunner对变量的检查点设置(已解决)
比如,我录制一个windows自带的计算器计算加法,然后建立数据驱动,可我怎么知道每次计算的数值是不是正确呢??录入数值和显示结果都是在一个框中,如何设计才可以检查计算结果是不是正确呢?
[ 本帖最后由 狩猎者 于 2006-5-22 09:22 编辑 ] 可以用pause()这个函数,作为调试来说很好用 可以说具体点吗?我刚用不久。不太理解怎么用。谢谢了! 其实我也是新手,大家互相学习,举个简单的例子看解释得对不对
public n=2,m=5,z;
z=n+m;
pause(z);
这样在运行过程中到pause语句就会弹出对话框显示变量z的值 和我说的意思不一样。
我的意思是:z=n+m,然后我们去检查z 是否计算的正确。
当然如果只是验证一个只要插入一个检查点,我的意思是,建立数据驱动后,面对多次的计算结果,如果验证每次计算的数值是不是正确 不好意思,理解错了
那把期望值建个表一一验证不就可以了吗 呵呵,就是这个表怎么建立我不会,不知道怎么弄
你能教教我吗?谢谢了!!!! 在数据驱动表中增加一列“结果“,与加数和被加数一一对应对应,呵呵 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 代码
感觉这应该就是你想达到的效果 感谢,感谢,我研究下,有问题再请教你啊!有msn吗?留个地址好吗? 我在表中加入了结果列,但最后得到的结果都是第一列的数据结果,我看了数据驱动时,数值是按照设定循环的。
例如:执行了4+5=9,5+6=11,但结果信息是2个4+5=9。 我试了下可以实现的啊,是不是没包进循环,方便的话贴出代码看看 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);
帮我看下吧,谢谢了!! 我现在的系统里面没有计算器,跑不了,你用pause测测变量取值后的情况,应该就能分析出问题
建议,发个短信问下生如火花,他比我强多了 恩,好的, 谢谢了!
我先试试用pasue 看了看TSL帮助,还是没明白,怎么用pasue测变量取值后的情况?:( 原帖由 狩猎者 于 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); 说实在的,XLS表的处理我现在也忘的差不多了。楼主的想法应该是验证结果是不是正确。如果是确定的数据计算(非随机的)应该是可以做到从一个表中取得期望的结果和实际结果对比。 对,对!就是生如火花版主的意思!谢谢大家的帮助!!
我脚本现在的问题就是,它只验证,xls表中第一行的数据,剩下的无法验证。
比如我有3行数据,最后出来的结果是3行都通过了,但都是第一行的数据。
[ 本帖最后由 狩猎者 于 2006-5-18 11:38 编辑 ] 哈哈,问题总算解决了!感谢大家的帮助!
页:
[1]
2