所以我想为练习做这个代码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
但它应该返回一个失败的测试。我在这里想念什么?
答案 0 :(得分:24)
如python unittest doc中所述:
最简单的TestCase子类将简单地实现一个测试方法 (即名称以test开头的方法)
因此,您需要将方法名称更改为以下内容:
def test_add_returns_zero_for_emptyString(self):
self.assertEqual(Add(' '), 0)
答案 1 :(得分:13)
旁注:此外,所有测试所在的文件名称应以'test _'开头
答案 2 :(得分:1)
症状相同,但问题不同。确保您没有混淆制表符和空格的缩进。当您从在线资源复制代码并将其更新为您的需要时,可能会出现此问题。由于制表符和空格在大多数编辑器中看起来非常相似,因此可能无法正确定义测试功能。
答案 3 :(得分:0)
我有类似的问题。我的根本原因是我已将unittest.main的执行块放在Test类中。这保持了消息传递RAN 0测试。将其移出课堂即可。
if __name__ == '__main__':
unittest.main()
答案 4 :(得分:0)
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()
答案 5 :(得分:0)
Do not define __init__
;对于该链接,请改用def setUp(self)
,unittest会调用它。另外,请勿定义run
;我将我的重命名为_run
,问题终于消失了。
答案 6 :(得分:0)
就我而言,我在当前测试目录中添加了__init__.py
,问题就消失了。