51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2646|回复: 14
打印 上一主题 下一主题

[原创] 运算检查:IF--Then 语句应怎样写?

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2006-4-24 16:27:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
运算结果检查: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 编辑 ]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2006-4-25 16:25:05 | 只看该作者
!·#¥%……—
楼主怎么找到工作的?给大家介绍介绍经验~~
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2006-4-26 09:12:11 | 只看该作者

Horus_Ra 您好,我知自已水平差,请您赐教!

Horus_Ra 您好,我知自已水平差,请您赐教!

[ 本帖最后由 netsky_lt 于 2006-4-26 13:35 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2006-4-26 09:29:10 | 只看该作者
你可以用两个变量分别获取price和quantity两列的值,将两个相乘的结果放到第三列中。
回复 支持 反对

使用道具 举报

该用户从未签到

5#
 楼主| 发表于 2006-4-26 17:56:03 | 只看该作者

我从网上看了些例子,但还是不会写.

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 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 2006-4-26 18:02:06 | 只看该作者
If a > b Then
        c = a
Else
        c = b       
End If


如果a大于b的话,c就等于a,不然的话,c就等于b
回复 支持 反对

使用道具 举报

该用户从未签到

7#
 楼主| 发表于 2006-4-27 09:49:00 | 只看该作者

我写这段代码想实现功能是叛断一个输出值的对错

我写这段代码想实现功能是叛断一个输出值的对错:
定义了三个变量:

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 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

x
回复 支持 反对

使用道具 举报

该用户从未签到

8#
 楼主| 发表于 2006-4-27 15:45:21 | 只看该作者

语法没报错,运行报告还是错了

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 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

9#
发表于 2006-4-27 16:24:22 | 只看该作者
你可能赋值错了吧?
你可以这样写:

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窗口后进行单步调试,可以看到变量改变的情况~~
回复 支持 反对

使用道具 举报

该用户从未签到

10#
 楼主| 发表于 2006-4-27 16:37:12 | 只看该作者

结果显示错啦

Step Name: testing


Step Failed

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

[ 本帖最后由 netsky_lt 于 2006-4-27 16:56 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

11#
发表于 2006-4-27 17:04:23 | 只看该作者
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
回复 支持 反对

使用道具 举报

该用户从未签到

12#
 楼主| 发表于 2006-4-27 17:48:34 | 只看该作者

问题算是解决了,谢谢各位帮忙!

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
回复 支持 反对

使用道具 举报

该用户从未签到

13#
发表于 2006-4-28 11:51:33 | 只看该作者
你可以从“testing output:2500.00 , price*quantity:2500 Failed”这句话看到,是小数点的问题~~

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

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

个人觉得CDbl最方便~~~
回复 支持 反对

使用道具 举报

该用户从未签到

14#
发表于 2006-4-28 14:00:41 | 只看该作者
原帖由 Horus_Ra 于 2006-4-28 11:51 发表
你可以从“testing output:2500.00 , price*quantity:2500 Failed”这句话看到,是小数点的问题~~

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

...



不是这么回事吧。。。?
回复 支持 反对

使用道具 举报

该用户从未签到

15#
发表于 2006-4-28 18:05:58 | 只看该作者
a = 2500.00
b = 2500
MsgBox StrComp(a, b, 1)

你可以试试看~~返回0表示a和b相同
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-9-22 04:37 , Processed in 0.101402 second(s), 29 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表