0

我在数据驱动模式下对一个简单的计算器应用程序进行了编码 UI 测试。添加断言后,我的测试结果没有通过,我认为这是由于“。” (Windows 计算器应用程序中已经存在的小数点)。

因此,我只想知道如何编写代码,以便接受所有类型的值,包括十进制和整数。我用于数据表的 CSV 文件是

input1     input2      expected_add
1.2         2.3        3.5
2.4         2.5        4.9
5.6         1.4         7    

这里第一行和第二行通过,但第三行失败。

这是我用于数据驱动测试的示例代码。

this.UIMap.add_2_dec_numParams.UICalculatorDialogSendKeys = TestContext.DataRow["input1"].ToString();
this.UIMap.add_2_dec_numParams.UIItemEditSendKeys = "{add}" + TestContext.DataRow["input2"].ToString() + "=";
this.UIMap.add_2_dec_num();
this.UIMap.add_asertExpectedValues.UIItemEditText = TestContext.DataRow["expected_add"].ToString()+" ";
this.UIMap.add_asert();

前两行通过,因为它们有小数。在第三行的预期结果中,我需要将值7设为7.只有这样它才会被计算器接受。那就是问题所在..

如果我将代码更改为以下内容:

this.UIMap.add_asertExpectedValues.UIItemEditText = TestContext.DataRow["expected_add"].ToString()+"."+" ";

然后第三行将通过,前两行将失败。错误将显示为expected <3.5 > actual<3.5. >expected <4.9 > actual<4.9. >这就是问题所在。

4

1 回答 1

0

我的猜测是使用的断言是比较字符串而不是转换为整数或双精度然后比较。“7”和“7”的字符串比较。当然会失败。

将您的断言移出 UIMap。然后在执行 Assert.AreEqual 之前将文本框和数据行的文本值转换为双精度值。如果您想避免双精度浮点数的一些误报,请使用具有 delta 的版本...

于 2012-05-18T12:15:31.453 回答