断言True为True的奇数失败

时间:2019-08-12 15:58:47

标签: python

我正在为某些功能编写一些单元测试。这个特定的图像返回两个图像之间差异的百分比值。在测试中,我使用assert语句来评估布尔值,结果是错误的。

当图像在公差范围内匹配时,该函数返回True,并且在此运行中,我将image_a.png与自身进行比较,因此每次都返回True。出于某些未知原因,“断言匹配为True”每次都会引发断言错误。

这是错误日志:

platform linux2 -- Python 2.7.5, pytest-4.6.5, py-1.8.0, pluggy-0.12.0
_____________________________ test_imagediff_match _____________________________

  tmpdir = local('/tmp/pytest-of-install2/pytest-5620/test_imagediff_match0')

  def test_imagediff_match(tmpdir):
  """
  Test normal usage of routine. Images are identical and should match with 0 
  error.
  """
  tmpdir.chdir()
  base_dir = os.path.dirname(__file__)
  = os.path.join(base_dir, "image_a.png")
  image_b = os.path.join(base_dir, "image_a.png")
  comparison = imagediff.ImageDiff(canon=image_a, export=image_b)
  match = comparison.images_match()
> assert match is True
E assert True is True

pythontools/fluids_testing/tools/tests/test_imagediff.py:20: AssertionError

当然,这不应引发错误。

此错误最初是由pytest-4.6.5在TFS的自动构建环境中的python 2.7.5上引发的,但是我在PowerShell中运行的Python 3.7.4中重复了该错误。

有人知道逻辑为什么会完全失败吗?我原本以为True已被重新分配,但这在Python 3中是不可能的。

1 个答案:

答案 0 :(得分:0)

我在通过将语句更改为assert match发布问题之前解决了这个错误,我只是想知道为什么会这样。

我发现了错误! imagediff返回numpy.bool_类型,由于某种原因它不是True

>>> test.test_imagediff_closematch(pathlib.Path("."))
Type of 'match': <class 'numpy.bool_'>
repr(match) = True
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Users\mrea\Documents\FluidsTestTools\pythontools\fluids_testing\tools\tests\test_imagediffssim.py", line 40, in test_imagediff_closematch
    assert match is True
AssertionError
>>>

我发现numpy.bool_不能与常规bool进行比较很奇怪,但是我想无论如何我都将它们进行了比较。