数据驱动的问题?
今天学WR的课程,用的是自带的那个飞机票预定程序,加了一个数据驱动,表里输入几个值,使每次回放时的order_num的值不一样,(不知道我说清楚了没),然后计算tickets*price是否等于total,输入num为2时,它总是报错,可是明明乘积是等于total的,很奇怪,不知道为什么,试了很多次都这样. 3*647.60=1942.80明明就是正确的啊???------------------------
那天的确没说清楚哦,真是对不起看得人啊,重新说一下.脚本是这样的:
table = "lesson8.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);
# Flight Reservation
set_window ("Flight Reservation", 4);
menu_select_item ("File;Open Order...");
# Open Order
set_window ("Open Order", 0);
button_set ("Order No.", ON);
edit_set ("Edit", ddt_val(table,"order_num"));
button_press ("OK");
# Flight Reservation
set_window ("Flight Reservation", 3);
menu_select_item ("File;Fax Order...");
# Fax Order No. 4
set_window ("Fax Order No. 4", 3);
edit_get_text("# Tickets:",tickets);
edit_get_text("Ticket Price:",price);
edit_get_text("Total:",total);
# check that total tickets price is calculated correctly
if(tickets*price == total)
tl_step("total",0,"total is correct,"tickets"乘"price"等于"total"");
else tl_step("total",1,"total is incorrect,"tickets"乘"price"不等于"total"");
button_press ("Cancel");
}
ddt_close(table);
运行到标红的地方时,就从表里提取不同的order_num值(订单号),比如:2、4、6,每个值就打开相应的订单内容,里面包括单张机票价、共订了几张,合计多少钱等信息,然后,脚本的末尾处有个简单的判断,看合计是否等于票价*张数,当打开2号订单时,price=647.60,tickets=3,total=1942.80,可是实际运行结果为“total is incorrect,3乘647.60不等于1942.80”,不知道为什么会报错误,乘积是对的阿?其他几个订单的乘积就没有问题。
不知道这次说清楚,我是自己学的测试,没有给公司或谁上报过bug,更不知道怎样上报才是符合规范的,所以请大家谅解了,我也非常希望哪位大虾可以指点下阿,偶将不胜感激。
[ 本帖最后由 testzhu 于 2006-11-6 10:21 编辑 ] 你工作时就是这样上报BUG的吗? 最基本的你也要把BUG出现的环境, BUG 状态, 以即你的操作描
述清楚吧, 否则别人怎么修改BUG. 顶上去
I copy your script and run it , the result is OK, no any error showing up.
I copy your script and run it , the result is OK, no any error showing up.win_activate("Fax Order No. 56");
set_window ("Fax Order No. 56", 3);
edit_get_text("# Tickets:",tickets);
edit_get_text("Ticket Price:",price);
edit_get_text("Total:",total);
# check that total tickets price is calculated correctly
if(tickets*price == total)
tl_step("total",0,"total is correct,"tickets"乘"price"等于"total"");
else tl_step("total",1,"total is incorrect,"tickets"乘"price"不等于"total"");
# button_press ("Cancel"); 我输入其他的任何一个order_num都成功,但是order_num为2的时候就不行,能不能帮我试一下2号订单的结果还是correct吗?拜谢~~~~sdlkfj1 以前,有过类似的帖子。输入2的时候,确实failed。
关注ing。。。 以前也有过类似的帖子讨论,可能是计算机在处理浮点类型变量的时候不精确所致。一般可以设定一个容错范围:比如1.0e-5,2个浮点值的差值小于这个值认为是二者相等。试一下吧 确实是由于浮点类型的精度问题所引起的,你可以把tickets*price的值取出来,再把total的值取出来进行比较,就会发现原来只是差小数点后面一个0而已 这个问题我也遇到了,没有人能解决吗?
我将2这个订单数量修改成4,测试通过了,但改成3测试不通过,,真不知道为什么,。
为什么这里没有一个转换为浮点的函数,只有INT,,
真不知道如何解决!
页:
[1]