assertStructuredAlmostEqual
(函数来自 pyomo.common.unittest)
- pyomo.common.unittest.assertStructuredAlmostEqual(first, second, places=None, msg=None, delta=None, reltol=None, abstol=None, allow_second_superset=False, item_callback=<function _floatOrCall>, exception=<class 'ValueError'>, formatter=<function _defaultFormatter>)[source]
测试第一个和第二个在容差范围内是否相等
这使用绝对(abstol)和相对(reltol)容差来比较第一个和第二个。它将递归地深入到序列和映射容器中(允许对包括列表和字典在内的结构化数据进行相对比较)。
places 和 delta 是为了与 assertAlmostEqual 兼容而支持的。如果提供了 places,则 abstol 计算为 10**-places。delta 是 abstol 的别名。
如果未指定{abstol, reltol, places, delta}中的任何一个, reltol默认为1e-7。
如果 allow_second_superset 为 True,则:
只有在first中的映射中找到的键/值对才会与second进行比较(允许second中的映射包含额外的键)
只有在first序列中找到的值才会与second进行比较(允许second序列包含额外的值)
相对误差是针对数值计算的,公式如下:
abs(first - second) / max(abs(first), abs(second))
只有当 first != second 时(从而避免除以零的错误)。
项目(除了序列/映射容器、匹配字符串和满足first is second的项目之外的条目)在测试相等性和相对容差之前传递给item_callback。
如果 first 和 second 在容差范围内不相等,则引发 exception。
- Parameters:
first – 要比较的第一个值
second – 要比较的第二个值
places (int) – 如果first和second的差值在places位小数之间,则认为它们是等价的;等同于abstol = 10**-places(为了与assertAlmostEqual兼容而包含)
msg (str) – 失败时引发的消息
delta (float) – abstol 的别名
abstol (float) – 绝对容差。如果first和second的绝对差小于abstol,则认为它们是等价的。
reltol (float) – 相对容差。如果first和second的绝对差除以first和second中较大的一个小于reltol,则认为它们是等价的。
allow_second_superset (bool) – 如果为True,则在第二个容器中找到的额外条目不会触发失败。
item_callback (function) – 除了序列/映射容器、匹配字符串和满足is条件的项之外,其他项都会传递给此回调函数,以生成用于比较的(名义上为浮点数的)值。
异常 (Exception) – 当first与second不“几乎相等”时引发的异常。
formatter (function) – 用于生成最终失败消息的回调函数(为了与unittest兼容)