Python unittest - 运行 0.000 秒内进行 0 次测试
Python unittest - Ran 0 tests in 0.000s
所以我想做这个代码Kata来练习。
我想在单独的文件中使用 tdd 实现 kata:
算法:
# stringcalculator.py
def Add(string):
return 1
和测试:
# stringcalculator.spec.py
from stringcalculator import Add
import unittest
class TestStringCalculator(unittest.TestCase):
def add_returns_zero_for_emptyString(self):
self.assertEqual(Add(' '), 0)
if __name__ == '__main__':
unittest.main()
当 运行 测试文件时,我得到:
Ran 0 tests in 0.000s
OK
它应该 return 然而,一个失败的测试。我在这里想念什么?
如 python 单元测试中所述 doc:
The simplest TestCase subclass will simply implement a test method
(i.e. a method whose name starts with test)
因此您需要将方法名称更改为如下所示:
def test_add_returns_zero_for_emptyString(self):
self.assertEqual(Add(' '), 0)
旁注:此外,所有测试所在的文件的名称应以 'test_'
开头
相同的症状,但不同的问题。确保您没有混淆缩进的制表符和空格。当您从在线资源复制代码并根据您的需要对其进行更新时,可能会出现此问题。由于制表符和空格在大多数编辑器中看起来非常相似,因此测试功能可能根本没有正确定义。
我遇到了类似的问题。我的根本原因是我将 unittest.main 的执行块放在测试 class 中。这使消息传递 运行 0 测试。将其移出 class 工作。
if __name__ == '__main__':
unittest.main()
class TestStringCalculator(unittest.TestCase):
def add_returns_zero_for_emptyString(self):
self.assertEqual(Add(' '), 0)
if __name__ == '__main__':
unittest.main()
考虑到上面写的代码中的以上两点,
由于行 ( if __name__ == '__main__'
)
的前缀 space,我遇到了以下错误
python3 test_flaskr.py
File "test_flaskr.py", line 66
if __name__ == '__main__':
^
确保没有前缀space,您需要在第1列编写代码如下:
if __name__ == '__main__':
unittest.main()
Do not define __init__
;根据 link,改用 def setUp(self)
,unittest 将调用它。另外,不要定义 run
;我将我的重命名为 _run
,问题终于消失了。
就我而言,我将 __init__.py
添加到当前测试目录,问题就消失了。
所以我想做这个代码Kata来练习。 我想在单独的文件中使用 tdd 实现 kata:
算法:
# stringcalculator.py
def Add(string):
return 1
和测试:
# stringcalculator.spec.py
from stringcalculator import Add
import unittest
class TestStringCalculator(unittest.TestCase):
def add_returns_zero_for_emptyString(self):
self.assertEqual(Add(' '), 0)
if __name__ == '__main__':
unittest.main()
当 运行 测试文件时,我得到:
Ran 0 tests in 0.000s
OK
它应该 return 然而,一个失败的测试。我在这里想念什么?
如 python 单元测试中所述 doc:
The simplest TestCase subclass will simply implement a test method (i.e. a method whose name starts with test)
因此您需要将方法名称更改为如下所示:
def test_add_returns_zero_for_emptyString(self):
self.assertEqual(Add(' '), 0)
旁注:此外,所有测试所在的文件的名称应以 'test_'
开头相同的症状,但不同的问题。确保您没有混淆缩进的制表符和空格。当您从在线资源复制代码并根据您的需要对其进行更新时,可能会出现此问题。由于制表符和空格在大多数编辑器中看起来非常相似,因此测试功能可能根本没有正确定义。
我遇到了类似的问题。我的根本原因是我将 unittest.main 的执行块放在测试 class 中。这使消息传递 运行 0 测试。将其移出 class 工作。
if __name__ == '__main__':
unittest.main()
class TestStringCalculator(unittest.TestCase):
def add_returns_zero_for_emptyString(self):
self.assertEqual(Add(' '), 0)
if __name__ == '__main__':
unittest.main()
考虑到上面写的代码中的以上两点,
由于行 ( if __name__ == '__main__'
)
python3 test_flaskr.py
File "test_flaskr.py", line 66
if __name__ == '__main__':
^
确保没有前缀space,您需要在第1列编写代码如下:
if __name__ == '__main__':
unittest.main()
Do not define __init__
;根据 link,改用 def setUp(self)
,unittest 将调用它。另外,不要定义 run
;我将我的重命名为 _run
,问题终于消失了。
就我而言,我将 __init__.py
添加到当前测试目录,问题就消失了。