【问题标题】:Can Python nose tests show wrong value?Python 鼻子测试会显示错误的值吗?
【发布时间】:2017-05-12 17:01:41
【问题描述】:

我正在用鼻子运行一些测试,它工作正常,但在结果中,我只看到哪条线上的哪个测试失败,而不是错误的值是什么。例如,我正在运行nosetests -v,我得到了这个:

======================================================================
FAIL: tests.test_convert_to_steer
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/nose/case.py", line 197, in runTest
    self.test(*self.arg)
  File "/home/pi/ared/tests.py", line 7, in test_convert_to_steer
    assert convert_to_steer(100, 100) == 100
AssertionError

这只会告诉我哪些测试失败了,但我现在必须手动打印出convert_to_steer(100, 100) 的结果以查看结果。

有谁知道它如何也能告诉我我得到错误的结果是什么?

【问题讨论】:

  • 如果您希望测试为您提供错误的结果,并且如果您愿意更改测试运行器,您可能需要使用pytest 而不是nose。请参阅此处的示例:imgur.com/RaWZuu4

标签: python unit-testing assert nose


【解决方案1】:

如果您的测试套件扩展了unittest.TestCase,您可以使用self.assertEqual(convert_to_steer(100, 100), 100)

有关详细信息,请参阅the docs

【讨论】:

  • 我知道,但我喜欢 nose 的简单性并且只使用 assert。使用简单的asserts 时是否有可能看到这一点?
  • nose 与使用assert 无关。 unittest 赋予这些能力是有原因的:因为它们不以另一种方式存在。您可以将消息传递给assert,但它不会告诉您任何有关参数的信息。试试assert 4 == 5, "Four isn't five"
  • @kramer65 - assert 是一个关键字,不能被覆盖 - 你得到你得到的。 assert 所做的只是检查一个表达式(一系列 python 字节码)是否为真。它不知道调用了函数、进行了比较或返回值是什么。只是尘埃落定的单个对象的真值(在您的情况下是简单的 True 或 False)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-25
相关资源
最近更新 更多