gpt4 book ai didi

python - 尝试学习 TDD - 不太顺利

转载 作者:太空宇宙 更新时间:2023-11-03 13:03:51 26 4
gpt4 key购买 nike

我已经尝试学习 Python 大约 6 周了。在这个网站上阅读了很多关于 TDD 的内容后,我购买了 Roy Osherove 的单元测试艺术(好书!),在学习 Python 的同时尝试使用 TDD。这本书使用.NET 但它似乎不是问题。 stub 是 stub ,模拟是模拟。

当我在网上阅读和查看 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 提要的依赖?通过 stub 并始终返回包含示例提要的内存中字符串?

一旦离开 TDD 教程和书籍喜欢使用的非常简单的计算器示例,我就会陷入困境。 :(

最佳答案

您可能遇到的一个挑战是您的测试过于广泛。一次下载和解析所有内容意味着您将编写大量代码。尝试将第一个测试压缩一点。这可能有助于让您集中注意力。

另一个挑战可能是您正在编写没有太多逻辑的代码,您只是委托(delegate)给其他库来进行下载和 RSS 解析。这使得很难解决问题。在那种情况下,这可能是一个相当无趣的例子来尝试练习。考虑尝试试驾类似 Conway's Game of Life 的东西作为一个有趣但更简单的问题。

希望对您有所帮助!

布兰登

关于python - 尝试学习 TDD - 不太顺利,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10535576/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com