51Testing软件测试论坛

标题: 运算检查:IF--Then 语句应怎样写? [打印本页]

作者: netsky_lt    时间: 2006-4-24 16:27
标题: 运算检查:IF--Then 语句应怎样写?
运算结果检查:IF--THEN  语句应怎样写?
例如(P*q=A) 其中P与q已经参数化,A为输出值;
IF q>0 then P*q=A ??????


Browser("XXX:s###").Window("XXX-新增---操作人:s###").Page("XXX-新增---操作人:s###").WebEdit("goodsqty").Set DataTable("price", dtLocalSheet)
Browser("XXX---操作人:s###").Window("XXX-新增---操作人:s###").Page("XXX-新增---操作人:s###").WebEdit("price").Set DataTable("quantity", dtLocalSheet)
Browser("XXX---操作人:s###").Page("XXX---操作人:s###").Sync
Browser("XXX操作人:s###").Window("XXX-新增---操作人:s###").Output CheckPoint("2500.00")

[ 本帖最后由 netsky_lt 于 2006-4-24 16:33 编辑 ]
作者: Horus_Ra    时间: 2006-4-25 16:25
!·#¥%……—
楼主怎么找到工作的?给大家介绍介绍经验~~
作者: netsky_lt    时间: 2006-4-26 09:12
标题: Horus_Ra 您好,我知自已水平差,请您赐教!
Horus_Ra 您好,我知自已水平差,请您赐教!

[ 本帖最后由 netsky_lt 于 2006-4-26 13:35 编辑 ]
作者: BiSheng    时间: 2006-4-26 09:29
你可以用两个变量分别获取price和quantity两列的值,将两个相乘的结果放到第三列中。
作者: netsky_lt    时间: 2006-4-26 17:56
标题: 我从网上看了些例子,但还是不会写.
Dim price,quantity,output
        price=Browser("采购合同管理---操作人:s###").Window("采购合同管理总单-新增---操作人:s###").Page("采购合同管理总单-新增---操作人:s###").WebEdit("goodsqty").GetROProperty("Value")
        quantity=Browser("采购合同管理---操作人:s###").Window("采购合同管理总单-新增---操作人:s###").Page("采购合同管理总单-新增---操作人:s###").WebEdit("price").GetROProperty("Value")
        output=Browser("采购合同管理---操作人:s###").Window("采购合同管理总单-新增---操作人:s###").Page("采购合同管理总单-新增---操作人:s###").WebEdit("conmoney").GetROProperty("Value")
  If output=price*quantity
  Then
      Reporter.ReportEvent micPass, "testing", "pass"
else
      Reporter.ReportEvent micFail, "testing", "Failed"
end if

[ 本帖最后由 netsky_lt 于 2006-4-27 09:33 编辑 ]
作者: Horus_Ra    时间: 2006-4-26 18:02
If a > b Then
        c = a
Else
        c = b       
End If


如果a大于b的话,c就等于a,不然的话,c就等于b
作者: netsky_lt    时间: 2006-4-27 09:49
标题: 我写这段代码想实现功能是叛断一个输出值的对错
我写这段代码想实现功能是叛断一个输出值的对错:
定义了三个变量:

Dim price,quantity,output
        price=Browser("采购合同管理---操作人:s###").Window("采购合同管理总单-新增---操作人:s###").Page("采购合同管理总单-新增---操作人:s###").WebEdit("price").GetROProperty("Value")
         (变量:取WebEdit("price")显示的值赋值给price)
        quantity=Browser("采购合同管理---操作人:s###").Window("采购合同管理总单-新增---操作人:s###").Page("采购合同管理总单-新增---操作人:s###").WebEdit("goodsqty").GetROProperty("Value")
        (变量:取WebEdit("goodsqty")显示的值赋值给quantity)
        output=Browser("采购合同管理---操作人:s###").Window("采购合同管理总单-新增---操作人:s###").Page("采购合同管理总单-新增---操作人:s###").WebEdit("conmoney").GetROProperty("Value")
         (变量:取WebEdit("conmoney")显示的值赋值给output)
  If output=price*quantity
  Then
      Reporter.ReportEvent micPass, "testing", "pass"
else
      Reporter.ReportEvent micFail, "testing", "Failed"
end if

(如果output等于price乘以quantity,报告输出"testing", "pass",否则"testing", "Failed")

其中price与quantity已经参数化,output为输出值;我想获取数据时应怎样?
上面的思路是直接从页面显示取,下面的是从DataTable里取,但都失败.

Dim price,quantity,input
        price=DataTable("price", dtGlobalSheet)
        quantity=DataTable("quantity", dtGlobalSheet)
        output=DataTable("amount", dtGlobalSheet)
  If output=price*quantity
  Then
      Reporter.ReportEvent micPass, "testing", "pass"
else
      Reporter.ReportEvent micFail, "testing", "Failed"
end if


相关代码如下:

Browser("采购合同管理---操作人:s###").Window("采购合同管理总单-新增---操作人:s###").Page("采购合同管理总单-新增---操作人:s###").WebEdit("conenddate").Set "2006-04-29"
Browser("采购合同管理---操作人:s###").Window("采购合同管理总单-新增---操作人:s###").Page("采购合同管理总单-新增---操作人:s###").WebElement("spacer").Click 67,2
Browser("采购合同管理---操作人:s###").Window("采购合同管理总单-新增---操作人:s###").Page("采购合同管理总单-新增---操作人:s###").Link("选择_3").Click 8,8
Browser("采购合同管理---操作人:s###").Window("采购合同管理总单-新增---操作人:s###").Window("-- 网页对话框").Page("Page").WebElement("益母###").Click 52,9
Browser("采购合同管理---操作人:s###").Window("采购合同管理总单-新增---操作人:s###").Window("-- 网页对话框").Page("Page").WebButton("选中此记录").Click 44,9
Browser("采购合同管理---操作人:s###").Window("采购合同管理总单-新增---操作人:s###").Page("采购合同管理总单-新增---操作人:s###").WebEdit("goodsqty").Set DataTable("price", dtGlobalSheet)
Browser("采购合同管理---操作人:s###").Window("采购合同管理总单-新增---操作人:s###").Page("采购合同管理总单-新增---操作人:s###").WebEdit("price").Set DataTable("quantity", dtGlobalSheet)
Browser("Helix platform---操作人:s###").Page("Helix platform---操作人:s###").Sync
Browser("采购合同管理---操作人:s###").Window("采购合同管理总单-新增---操作人:s###").Output CheckPoint("2500.00")
Browser("采购合同管理---操作人:s###").Window("采购合同管理总单-新增---操作人:s###").Page("采购合同管理总单-新增---操作人:s###").WebElement("spacer_2").Click 71,11
Browser("采购合同管理---操作人:s###").Window("采购合同管理总单-新增---操作人:s###").Dialog("Microsoft Internet Explorer").WinButton("确定").Click

[ 本帖最后由 netsky_lt 于 2006-4-27 11:11 编辑 ]
作者: netsky_lt    时间: 2006-4-27 15:45
标题: 语法没报错,运行报告还是错了
Browser("采购合同管理---操作人:s###").Window("采购合同管理总单-新增---操作人:s###").Window("-- 网页对话框").Page("Page").WebButton("选中此记录").Click 44,9
Browser("采购合同管理---操作人:s###").Window("采购合同管理总单-新增---操作人:s###").Page("采购合同管理总单-新增---操作人:s###").WebEdit("goodsqty").Set DataTable("price", dtGlobalSheet)
Browser("采购合同管理---操作人:s###").Window("采购合同管理总单-新增---操作人:s###").Page("采购合同管理总单-新增---操作人:s###").WebEdit("price").Set DataTable("quantity", dtGlobalSheet)
Browser("Helix platform---操作人:s###").Page("Helix platform---操作人:s###").Sync
Browser("采购合同管理---操作人:s###").Window("采购合同管理总单-新增---操作人:s###").Output CheckPoint("2500.00")

Dim price,quantity,amount
        price=DataTable("price", dtGlobalSheet)
        quantity=DataTable("quantity", dtGlobalSheet)
        amount=DataTable("amount", dtGlobalSheet)
  If amount=price*quantity Then
      Reporter.ReportEvent micPass, "testing", "pass"
else
      Reporter.ReportEvent micFail, "testing", "Failed"
end if


Step Name: testing


Step Failed

Object  Details  Result  Time  
   
testing Failed Failed

100    25      2500.00
90      20      1800.00

是不是:100*25不等于2500.00
要声明变量类型?price,quantity,amount,怎样声明?

[ 本帖最后由 netsky_lt 于 2006-4-27 16:30 编辑 ]
作者: Horus_Ra    时间: 2006-4-27 16:24
你可能赋值错了吧?
你可以这样写:

If output=price*quantity
  Then
      Reporter.ReportEvent micPass, "testing", "output:" & output & " , " & "price*quantity:" & price*quantity
else
      Reporter.ReportEvent micFail, "testing", "output:" & output & " , " & "price*quantity:" & price*quantity
end if

这样可以在最后的结果中看到值了~~

或者你可以打开Debug窗口后进行单步调试,可以看到变量改变的情况~~
作者: netsky_lt    时间: 2006-4-27 16:37
标题: 结果显示错啦
Step Name: testing


Step Failed

Object  Details  Result  Time  
   
testing output:2500.00 , price*quantity:2500 Failed

[ 本帖最后由 netsky_lt 于 2006-4-27 16:56 编辑 ]
作者: gotesting    时间: 2006-4-27 17:04
sdlkfj5

这段改成这样试试:
Dim price,quantity,amount
        price=DataTable("price", dtGlobalSheet)
        quantity=DataTable("quantity", dtGlobalSheet)
        amount=DataTable("amount", dtGlobalSheet)
  If Abs(amount-price*quantity)<0.000000001 Then
      Reporter.ReportEvent micPass, "testing", "pass"
else
      Reporter.ReportEvent micFail, "testing", "Failed"
end if
作者: netsky_lt    时间: 2006-4-27 17:48
标题: 问题算是解决了,谢谢各位帮忙!
Dim price,quantity,amount
' 浮点数不能直接用=来比较大小,所以精确到极不数位(0.000000001)就不报错
price=DataTable("price", dtGlobalSheet)
        quantity=DataTable("quantity", dtGlobalSheet)
        amount=DataTable("amount", dtGlobalSheet)
  If Abs(amount-price*quantity)<0.000000001 Then
      Reporter.ReportEvent micPass, "testing", "output:" &amount & " , " & "price*quantity:" & price*quantity
else
      Reporter.ReportEvent micFail, "testing", "output:" & amount & " , " & "price*quantity:" & price*quantity
end if
作者: Horus_Ra    时间: 2006-4-28 11:51
你可以从“testing output:2500.00 , price*quantity:2500 Failed”这句话看到,是小数点的问题~~

如果两个数都是数值型(而不是字符串)的话,可以用StrComp
或者可以用CDbl,将两个数值强制转换成浮点型

或者可以像11楼那样做减法~~

个人觉得CDbl最方便~~~
作者: gotesting    时间: 2006-4-28 14:00
原帖由 Horus_Ra 于 2006-4-28 11:51 发表
你可以从“testing output:2500.00 , price*quantity:2500 Failed”这句话看到,是小数点的问题~~

如果两个数都是数值型(而不是字符串)的话,可以用StrComp或者可以用CDbl,将两个数值强制转换成浮点型

...



不是这么回事吧。。。?
作者: Horus_Ra    时间: 2006-4-28 18:05
a = 2500.00
b = 2500
MsgBox StrComp(a, b, 1)

你可以试试看~~返回0表示a和b相同




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2