【发布时间】:2020-03-07 19:56:55
【问题描述】:
我正在编写一个应用程序,它使用 BeautifoulSoup4 从 HTML 中提取一些数据。这些是某种搜索结果,更具体地说。我认为拥有一个 Parser 类是个好主意,它存储 URL 前缀、请求标头等默认值。配置这些参数后,公共方法将返回一个对象列表,每个对象都包含一个结果,或者可能甚至是一个带有列表的对象以及一些其他参数。我正在努力将构建解析器实现的小块逻辑与解析器类本身分离。我想编写几十个解析器私有实用程序方法,例如:_is_next_page_available、_are_there_any_results、_is_did_you_mean_available 等。但是,这些是编写单元测试的完美候选者!而且因为我想让它们私有化,所以我觉得我错过了一些东西......
我的另一个想法是将解析器编写为一个函数,调用一堆其他实用函数,但这等于将所有这些方法公开,这是没有意义的,因为它们是实现细节。
你能告诉我如何正确设计这个吗?
【问题讨论】:
-
我认为你有点自相矛盾:你说你想让方法私有,但这会阻止你对它们进行单元测试(这是一个完全正确的观点),但在最后一段似乎您说您也不希望这些方法公开,因为它们是实现细节。
标签: python unit-testing oop solid-principles