testzhu 发表于 2006-11-3 15:30:02

数据驱动的问题?

今天学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 编辑 ]

小李美刀 发表于 2006-11-3 17:35:54

你工作时就是这样上报BUG的吗? 最基本的你也要把BUG出现的环境, BUG 状态, 以即你的操作描

述清楚吧, 否则别人怎么修改BUG.

testzhu 发表于 2006-11-6 10:38:22

顶上去

小李美刀 发表于 2006-11-6 12:02:25

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");

testzhu 发表于 2006-11-6 14:41:18

我输入其他的任何一个order_num都成功,但是order_num为2的时候就不行,能不能帮我试一下2号订单的结果还是correct吗?拜谢~~~~sdlkfj1

gp_jl 发表于 2006-11-6 22:40:40

以前,有过类似的帖子。输入2的时候,确实failed。
关注ing。。。

shyfish 发表于 2006-11-10 21:25:06

以前也有过类似的帖子讨论,可能是计算机在处理浮点类型变量的时候不精确所致。一般可以设定一个容错范围:比如1.0e-5,2个浮点值的差值小于这个值认为是二者相等。试一下吧

mln1014 发表于 2006-11-15 15:19:05

确实是由于浮点类型的精度问题所引起的,你可以把tickets*price的值取出来,再把total的值取出来进行比较,就会发现原来只是差小数点后面一个0而已

langhua553 发表于 2012-8-3 17:07:36

这个问题我也遇到了,没有人能解决吗?
我将2这个订单数量修改成4,测试通过了,但改成3测试不通过,,真不知道为什么,。
为什么这里没有一个转换为浮点的函数,只有INT,,
真不知道如何解决!
页: [1]
查看完整版本: 数据驱动的问题?