我是一个初学者程序员,在过去的一周里,我一直在尝试编写单元测试。我通读了单元测试文档,并观看了两个关于使用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
。先谢谢你
是的,您还可以使用mock对非面向对象代码进行单元测试
见下例:
输出为:
在上一个示例中,mock用于伪造/模拟函数a(),因此您可以单独测试函数b(),b()是SUT,而无需调用()实际实现。这对于更复杂的代码非常有用,特别是当函数a()依赖于单元测试级别可能不可用的数据时
您没有给出足够的示例来真正提供帮助,但有几个观察结果:
一般来说,最好对代码进行结构化,以避免在测试中进行模拟;在可能的范围内,每个函数都应该是一段独立的代码,可以单独调用
没有必要嘲笑争论;只需将测试值传入即可
我不确定此代码的用途:
在外部级别定义的
bar
与函数定义中用作参数的bar
是完全独立的变量。给他们起同一个名字是令人困惑的可以使用
patch
或patch.object
和return_value=...
选项模拟函数;不过,它通常建议需要对代码进行重构,以减少两个函数之间的依赖关系相关问题 更多 >
编程相关推荐