gpt4 book ai didi

python - python 中的单元测试网络抓取工具

转载 作者:行者123 更新时间:2023-11-28 22:47:18 25 4
gpt4 key购买 nike

我是单元测试的新手。我想为我写的 web scraper 编写单元测试。我的 scraper 从网站收集数据,该网站位于本地磁盘上,输入不同的日期会得到不同的结果

我在脚本中有以下功能。

get_date [returns date mentioned on web page]
get_product_and_cost [returns product mentioned and their cost]

我不确定在这些函数中测试什么。到目前为止我已经写了这个

class SimplisticTest(unittest.TestCase):

def setUp(self):
data = read_file("path to file")
self.soup = BeautifulSoup(data,'html5lib')

def test_date(self):
self.assertIsInstance(get_date(self.soup), str)

def test_date_length(self):
self.assertEqual(len(get_date(self.soup)),10)

if __name__ == '__main__':
unittest.main()

最佳答案

通常,最好从已知输入测试已知输出。在您的情况下,您测试返回类型,但测试返回的对象是否符合您对输入的期望会更好,这就是静态测试数据(在您的情况下是测试网页)变得有用的地方。您还可以使用 self.assertRaises(ExceptionType, method, args) 测试异常。引用https://docs.python.org/3.4/library/unittest.html如果您还没有。

基本上你想测试至少一个明确的案例(比如测试页),可以引发的异常,比如错误的参数类型(TypeError 或 ValueError)或可能的 None 返回类型,具体取决于你的函数。确保不要只测试返回的类型或返回的数量,而是明确地测试数据,这样如果进行了破坏功能的更改,它就会被发现(而更改仍可能返回 10 个元素,但元素可能包含无效数据)。我还建议为每种方法设置一个测试方法:get_date 将有其测试方法 test_get_date。

请记住,您要查找的是该方法是否能正常工作,因此请测试极端情况(大输入数据,尽可能多地支持或至少该方法定义它可以支持)并尝试创建它们这样一来,如果该方法的输出与其定义(文档)所预期的不同,则测试会失败,并且会及早发现重大更改。

关于python - python 中的单元测试网络抓取工具,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26448144/

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