unittest是否适用于Python中的功能(非面向对象)程序?
我是一个初学者程序员,在过去的一周里,我一直在尝试编写单元测试。我阅读了单元测试文档,并观看了两个关于使用unittest是否适用于Python中的功能(非面向对象)程序?,python,unit-testing,mocking,Python,Unit Testing,Mocking,我是一个初学者程序员,在过去的一周里,我一直在尝试编写单元测试。我阅读了单元测试文档,并观看了两个关于使用Mock实现单元测试的长教程。这些文档广泛地引用了模拟类,但对于函数,我不确定是否应该使用@patch/with patch,patch.dict{},side_effect,或者其他一些选项来模拟函数,特别是函数的参数 mymodule.py def regex(): '''Runs a regex, creates a dict 'data' and then calls scr
Mock
实现单元测试的长教程。这些文档广泛地引用了模拟类,但对于函数,我不确定是否应该使用@patch/with patch
,patch.dict{}
,side_effect
,或者其他一些选项来模拟函数,特别是函数的参数
mymodule.py
def regex():
'''Runs a regex, creates a dict 'data' and then calls scraper(data)'''
def scraper(data):
'''scrapes a website and then calls a function which submits data to a db'''
我想创建一个测试,将测试数据传递到函数
scraper
。提前感谢您。您没有给出足够的示例来提供真正的帮助,但有几点值得注意:
- 一般来说,最好对代码进行结构化,以避免在测试中进行模拟;在可能的范围内,每个函数都应该是一段独立的代码,可以单独调用
- 没有必要嘲笑争论;只需将测试值传入即可
- 我不确定此代码的用途:
在外部级别定义的bar={'key':'value'} def foo(巴): 通过
是一个与函数定义中用作参数的bar
完全独立的变量。给他们起同一个名字是令人困惑的bar
- 可以使用
或patch
以及patch.object
选项模拟函数;不过,它通常建议需要对代码进行重构,以减少两个函数之间的依赖关系return\u value=…
- 一般来说,最好对代码进行结构化,以避免在测试中进行模拟;在可能的范围内,每个函数都应该是一段独立的代码,可以单独调用
- 没有必要嘲笑争论;只需将测试值传入即可
- 我不确定此代码的用途:
在外部级别定义的bar={'key':'value'} def foo(巴): 通过
是一个与函数定义中用作参数的bar
完全独立的变量。给他们起同一个名字是令人困惑的bar
- 可以使用
或patch
以及patch.object
选项模拟函数;不过,它通常建议需要对代码进行重构,以减少两个函数之间的依赖关系return\u value=…
scraper(test\u data)
无需模拟。好的,我必须在某个地方有另一个bug,但我会根据需要排除故障并将其留到另一篇文章中。谢谢你。我感谢你的回答,我将澄清这个问题,而不是在这里详细说明。好的,所以在测试中你调用:scraper(test\u data)
无需模拟。好的,我必须在某个地方有另一个bug,但我会根据需要进行故障排除并将其留到另一篇文章中。非常感谢。