【发布时间】:2017-02-17 18:42:20
【问题描述】:
这是我第一次在学校的作业中使用 Python 的单元测试。我基本上有一个圆形对象,我在其中使用 pyunit 来确保正确存储数据。
我注意到 Python 只计算方法的数量作为测试用例,而不是断言语句的数量。
例如,我想测试方法是否正常工作,Python 仅将以下内容计为 2 个测试,尽管有 4 个断言语句。它真的让我措手不及,就像 Java 的 JUnit 一样,它会计算断言语句的数量。
def test_xcrd(self):
self.assertTrue(self.point.xcrd() == 1)
self.assertFalse(self.point.xcrd() == 5)
def test_ycrd(self):
self.assertTrue(self.point.ycrd() == 2)
self.assertFalse(self.point.ycrd() == 10)
python 中的“规范”是什么?每个方法应该只有一个断言语句吗?
【问题讨论】:
-
“与 Java 的 JUnit 一样,它会计算断言语句的数量,而不是” - 什么?从什么时候开始?
-
在以往的经验中,只要我有@Test 上面我想测试的方法,相应方法中的所有断言语句都会出现在Eclipse 的JUnit 测试面板中。例如,一个带有 4 个用 Java 编写的断言语句的方法——所有四个断言都将显示在 Eclipse 中。这些用 Python 和 pyunit 编写的相同断言说“在 0.001 秒内运行 1 次测试,OK。”
-
pyunit是第 3 方测试模块,不同于标准库中 CPython 附带的unittest模块。如果您使用的是unittest,那么您应该编辑文本以删除pyunit和pyunit标记。如果您发布了 MCVE stackoverflow.com/help/mcve,那么您使用的是哪个模块是毫无疑问的。 -
@TerryJanReedy wiki.python.org/moin/PyUnit 不同意? The docs 也说
unittest有时被称为 PyUnit。这部分在 Python 3 的文档中已经消失了…… -
看来 unittest 开始于名为 pyunit 的第 3 方模块,在 Junit 之后。该页面和单独的版本,最后一次更新是在 2001 年,有点像化石。标准库中的 Unittest 已经看到许多修复和更新,并且有不同的主要维护者。