所以我想做这个代码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
但是它应该返回一个失败的测试。我在这里想念什么?
如Python单元测试doc中所述:
最简单的TestCase子类将简单地实现一个测试方法 (即名称以 test 开头的方法)
因此,您需要将方法名称更改为如下所示:
def test_add_returns_zero_for_emptyString(self):
self.assertEqual(Add(' '), 0)
所有测试所在的文件名应以“test_”开头
我也有类似的问题。我的根本原因是我将 unittest.main 的执行块放置在 Test 类中。这使得 RAN 0 测试保持消息传递。将其移至课堂作业之外。
if __name__ == '__main__':
unittest.main()
就我而言,我将
__init__.py
添加到当前测试目录,问题就消失了。
相同的症状,但不同的问题。确保您没有混淆缩进的制表符和空格。当您从在线资源复制代码并根据需要进行更新时,可能会出现此问题。由于制表符和空格在大多数编辑器中看起来非常相似,因此测试函数可能根本没有正确定义。
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__':
^
确保没有前缀空格,并且需要在第一列编写代码,如下所示:
if __name__ == '__main__':
unittest.main()