我正在尝试模拟从文件中读取。使用示例,可以使用如下构造来完成:withpatch('__builtin__.open',mock_open(read_data='1'),create=True)asm:withopen('foo')ash:result=h.read()我想知道,有没有一种方法可以使用我的测试用例注释来模拟打开函数。喜欢:@patch.object(__builtin__,'open')deftest_check_status_running(self,m_open):我没有找到正确的方法,因为对我来说它适用于int而不适用于字符串:@patch.object(__
我已经浏览了页面https://docs.python.org/3/library/unittest.mock-examples.html我看到他们列出了一个关于如何模拟生成器的例子我有一个代码,我调用生成器给我一组值,我将这些值保存为字典。我想在我的单元测试中模拟对该生成器的调用。我已经写了下面的代码,但它不起作用。我哪里错了?In[7]:items=[(1,'a'),(2,'a'),(3,'a')]In[18]:deff():print"here"foriin[1,2,3]:yieldi,'a'In[8]:defcall_f():...:my_dict=dict(f())...:p
单元测试应该测试功能并尽量不了解实现细节。Mock.assert_called_with()是一个方便的函数,但据我所知它将*args与*args和**kwargs到**kwargs。因此:#classtobemockedduringtestclassSomeClass():deffunc(self,a,b,c=5):#...#codeundertestsomaclass_instance.func(1,b=2,c=3)#testcodethatworkssomeclass_mock.func.assert_called_with(1,b=2,c=3)#testcodethatwon'
我想基于现有的WSDL使用Pythonsoaplib模块生成stubSOAPWeb服务类。这个想法是为第三方网络服务生成模拟。是否存在任何此类代码生成器,还是我们必须自己编写?马丁 最佳答案 好吧,我尝试破解我的wsdl2interface(http://pypi.python.org/pypi/wsdl2interface)脚本来输出soaplib代码。我认为我有一些有用的东西,尽管它不是很漂亮或者没有经过特别好的测试。我将其粘贴在这里以供记录。如果有人需要它,我可能会被说服发布它,尽管它并不是我最好的代码。请注意,它使用Suds
如何使用@patch装饰器来修补内置的input()函数?例如,我想测试question.py中的一个函数,它包含对input()的调用:defquery_yes_no(question,default="yes"):"""Adaptedfromhttp://stackoverflow.com/questions/3041986/python-command-line-yes-no-input"""valid={"yes":True,"y":True,"ye":True,"no":False,"n":False}ifdefaultisNone:prompt="[y/n]"elifdef
我正在测试一个继承自另一个非常复杂的类的类,其中包含数据库连接方法和一堆依赖项。我想模拟它的基类,以便我可以很好地使用子类中定义的方法,但是在我从模拟类继承的那一刻,对象本身变成了模拟并失去了它的所有方法。如何模拟父类(superclass)?大致情况可以概括为:importmockClassMock=mock.MagicMock()classRealClass(ClassMock):deflol(self):print'lol'real=RealClass()real.lol()#Doesnotprintlol,butreturnsanothermockprintreal#print
我是一名C#开发人员,正在研究一些Python内容,所以我还不知道自己在做什么。我读过你并不真的需要用Python进行依赖注入(inject)。有人告诉我,您可以在代码中实例化对象并让它们以您想要的方式运行,但是,您可以将这些对象上的方法指向我在测试中定义的自己的stub——据说没有模拟。这是真的吗?我试过这样做但无法完全正常工作。这实际上是如何完成的?如何在没有模拟库的情况下在Python中stub方法? 最佳答案 这是一个基本示例。请注意,永远不会调用生产getData()方法。它已用stub模拟出来。importunittes
我刚刚开始使用python模拟框架。我只想计算一个方法被调用的次数,而不删除实际调用该方法的影响。例如,在这个简单的计数器示例中,我想同时递增计数器并跟踪它被调用的情况:importunittestimportmockclassCounter(object):def__init__(self):self.count=0defincrement(self):self.count+=1classCounterTest(unittest.TestCase):deftest_increment(self):c=Counter()c.increment()self.assertEquals(1,
只是检查是否有人在收听,已经为`pandas`生成了一组可以正常工作的mypy/typeshedstub。我天真地在本地pandas安装上运行了stubgen,这产生了一些错误。我可以从我必须开始的事情开始,但希望其他人把球推得更远。(虽然有一张旧票stub,但在GitHub上没有明显的结果。) 最佳答案 到现在(2021年3月)有adedicatedpandasstubproject进行中。然而,它不是由pandas团队开发的(感谢@remeus指出)。data-science-types项目已弃用。在GitHub上theywri
我遇到过很多PyCharm无法正确识别库中函数的问题,因此我决定查看PyCharm错误识别的一些示例函数的源代码。例如,PyCharm无法正确识别pickle.load();它认为pickle.load()不带任何参数,而实际上它只带一个参数。我问过这个问题here.所以我编写了以下简短的测试代码。importpickler=range(10)f=open("../temp/pickling_example.pkl","wb")pickle.dump(r,f)f.close()f=open("../temp/pickling_example.pkl","rb")pickle.load(