即使输出相同,断言在 groovy 中也失败

布鲁西强盗

我不确定为什么以下不起作用。

我只是将响应与一系列值进行比较。响应来自一个 json,其中前端的成本看起来像:

20, 25, 40, 50

但是当你抓住它时,它显示为 [[20.0000, 25.0000, 40.0000, 50.0000]]

所以我像这样压平了响应:

json.groups.options.cost.flatten()

这输出:

[20.0000, 25.0000, 40.0000, 50.0000]

现在我想将上述内容与一些硬编码值进行比较。所以我创建了这个变量:

def cost = [20, 25, 40, 50].collect { "${it}.0000" }

这输出:

[20.0000, 25.0000, 40.0000, 50.0000]

因此,当我同时断言它们时,我希望它们起作用,但它们不起作用。

assert cost == json.groups.options.cost.flatten()

现在有趣的是,如果我执行相同的断言,但成本设置如下:

def cost = [20.0000, 25.0000, 40.0000, 50.0000]

断言通过。为什么它只适用于此,我如何才能使用该.collect方法使其以原始方式工作

席蒙·斯捷尼亚克

它不会断言,因为您正在尝试List<GString>List<BigDecimal>. 一般来说,在比较这些列表时,您不必担心小数点,因为:

 assert [20, 25, 40, 50] == [20.0000, 25.0000, 40.0000, 50.0000]

其中第一列表是List<Integer>,第二个是List<BigDecimal>

您可以检查列表的类型,json.groups.options.cost.flatten()如果不是,List<BigDecimal>您可以通过

json.groups.options.cost.flatten().collect { new BigDecimal(it) }

然后简单地与 [20, 25, 40, 50]

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

具有相同输出的断言失败错误

Jmeter Groovy断言关键字未在树视图侦听器中引起断言失败

Groovy中的隐式断言语句

Groovy中是否存在肯定的断言消息?

在IntelliJ中运行Groovy脚本失败

groovy中的Repast ReLogo代码编译失败

在Java中使用相同代码时,Groovy脚本失败

无法从groovy执行中捕获全部输出

Jenkins Groovy 中的清理 bat 命令输出

UITableViewController中的断言失败

UICollectionView中的断言失败?

在soapui / groovy中断言时发生Xpath错误(在groovy方法中传递响应xml assert元素)

Groovy泛型失败

使用 Groovy 脚本断言数组列表中的变量值

在Groovy / Spock中,不会执行断言调用方法

SOAP UI XML响应中的键/值对的Groovy脚本断言

使用groovy脚本soapui逐行比较失败的测试步骤对测试步骤“断言包含”的响应

为什么在groovy中执行该curl命令失败?

Jenkins Multibranch Pipeline失败,因为它在Groovy Sandbox中运行

为什么这个简单的Groovy脚本在Jenkins管道中失败?

即使python / django中的值相同,assertEqual也会失败

UITextView _firstBaselineOffsetFromTop中的断言失败

FStar中的未知断言失败

***-[UIView _addConstraint:]中的断言失败,

dequeueReusableCellWithIdentifier:forIndexPath中的断言失败:

-[NSLayoutConstraint常量]中的断言失败

GMUNonHierarchicalDistanceBasedAlgorithm clustersAtZoom中的断言失败

Swift中的失败安全断言

createPreparedCellForItemAtIndexPath 中的 UICollectionView 断言失败