我已经尝试学习 Python 大约 6 周了。在这个网站上阅读了很多关于 TDD 的内容后,我买了 Roy Osherove的 The Art of Unit Testing(很棒的书!),尝试在学习 Python 的同时尝试 TDD。这本书使用.NET,但似乎没有问题。存根是存根,模拟是模拟。
当我在网上阅读和查看 TDD 示例时,我真的觉得我理解了为什么程序员会像他们那样编写代码。但是一旦我坐下来尝试自己,我一无所获。
举个昨天的例子:
我想为一个不太复杂的项目尝试 TDD。基本上,我想要的是一个类,它通过下载和解析 RSS 提要,保存一个包含(名称、日期)的元组列表。我为我的测试创建了一个新的 py 文件(还没有编写“真正的代码”)并编写了一个测试用例:
import unittest
from tv_schedule import TvSchedule
class TvScheduleTests(unittest.TestCase):
def test_download_success_and_parse_failure(self):
'''Successfully download RSS schedule for the specific user
but fail parsing it'''
self.tv = TvSchedule("User123")
# Check if ParserException was thrown I guess
if __name__ == "__main__":
unittest.main()
...然后我有点卡住了。我认为(大声笑!)。我真的需要一些关于这是否只是愚蠢和/或我如何才能做得更好的指示。我的直觉说我做了坏事。
我想让 TvSchedule 类在后台进行下载/解析(使用feedparser),因此您只需创建该类的一个新实例,然后就可以使用它。也许这是糟糕的设计,也很难测试?另外,我将如何消除对通过网络检索 rss 提要的依赖?通过存根并始终返回包含示例提要的内存字符串?
一旦我离开了 TDD 教程和书籍喜欢使用的非常简单的计算器示例,我就陷入了困境。:(