草庐IT

partial-mocks

全部标签

python - 检查 unittest.mock 调用参数不可知 w.r.t.它们是作为位置参数还是关键字参数传递

当unittest.mock.Mock对象被调用时,我可以使用调用的确切签名检查参数值:fromunittest.mockimportMockm=Mock()#creationofmockm('foo',bar='baz')#calltothemockm.assert_called_once_with('foo',bar='baz')#checkcallarguments检查具有相同值的不同签名将失败。例如,如果我们检查'baz'作为位置参数而不是命名参数,断言将失败:m.assert_called_once_with('foo','baz')#AssertionError:Expec

python - 测试实例中的方法是否已在 mock 中调用

我有这种设置,我正在测试一个正在使用另一个类的类,我想模拟后者,所以我只测试第一个类本身。nuclear_reactor.py:classNuclearReactor():def__init__(self):print"initializingthenuclearreactor"defstart(self):print"startingthenuclearreactor"nuclear_manager.py:fromnuclear_reactorimportNuclearReactorclassNuclearManager():def__init__(self):print"manag

python - moto 没有 mock ec2?

我正在尝试测试一些使用boto的python代码。我不想尝试针对AWS进行集成测试,所以我尝试用moto模拟它,但它的行为并不像我预期的那样。测试代码如下:importioimportboto3frommotoimportmock_ec2fromunittest.mockimportpatchfromargparseimportNamespacefromawswlimportcommands@mock_ec2@patch('awswl.externalip.get_external_ip',return_value='192.0.2.1')deftest_list_command_li

Python:有没有办法用 Matplotlib 绘制 "partial"曲面图?

我想用Matplotlib绘制一个“部分”曲面图,如下图所示请注意,它不是X-Y平面上的完整网格,而是从顶View中缺少一个角。以下是我试过但没有用的代码。importnumpyasnpfrommatplotlibimportpyplotfrommpl_toolkits.mplot3dimportAxes3DX=np.array([[0,1],[0,1,2],[0,1,2,3],])Y=np.array([[0,0],[1,1,1],[2,2,2,2],])Z=np.array([[0.5,0.6],[0.7,0.8,0.9],[1.0,1.1,1.2,1.3],])fig=pyplo

python - 如何将包装函数与 functools.partial 进行比较?

如果我定义我的函数如下:defmyfunc(arg1,arg2):pass然后myfunc==myfunc将返回True但是functools.partial(myfunc,arg2=1)==functools.partial(myfunc,arg2=1)将返回False。为了单元测试的目的,有没有一种简单的方法来测试部分函数是否是我期望的? 最佳答案 测试func、args和keywords属性是否相同:p1.func==p2.funcandp1.args==p2.argsandp1.keywords==p2.keywords其中

python - 使用 mock 模拟嵌套属性

我有一个返回对象的函数调用:r=Foo(x,y)其中r有一组丰富的嵌套属性。例如,我可以访问r.prop_a.prop_b.prop_c。我想模拟Foo,以便修改r的特定叶属性,即r.prop_a.prop_b.prop_c返回我控制的值:>>r=Foo(x,y)>>r.prop_a.prop_b.prop_c'fish'>>#somemockmagicpatchingofFooistakingplacehere>>r=Foo(x,y)>>r.prop_a.prop_b.prop_c'my_fish'我不太关心中间属性。有没有一种优雅的方式来模拟嵌套属性mock?

python - functools.partial 是否不适用于 multiprocessing.Pool.map?

我的代码简化后看起来像这样:run=functools.partial(run,grep=options.grep,print_only=options.print_only,force=options.force)ifnotoptions.singleandnotoptions.print_onlyandoptions.n>0:pool=multiprocessing.Pool(options.n)Map=pool.mapelse:Map=mapforfinargs:withopen(f)asfh:Map(run,fh)try:pool.close()pool.join()excep

python - 为什么 functools.partial 不返回一个真正的函数(以及如何创建一个真正的函数)?

所以我在Python中玩弄柯里化(Currying)函数,我注意到的一件事是functools.partial返回一个部分对象而不是实际函数。让我恼火的一件事是,如果我按照以下方式做某事:five=partial(len,'hello')five('something')然后我们得到TypeError:len()takesexactly1argument(2given)但是我想要发生的是TypeError:five()takesnoarguments(1given)有没有一种干净的方法让它像这样工作?我写了一个解决方法,但它对我来说太老套了(对于带有varargs的函数还不起作用):d

python - 如何使用 Mock 库模拟 Django ForeignKey 值?

我有一个模型,我正在尝试在不调用数据库层的情况下测试验证。我不会用文字描述,而是会发布一些示例代码。这里的问题是ForeignKey与Bar的关系,它与我要测试的内容无关,但阻止我运行我想要的测试。首先,myapp/models.py:fromdjango.core.exceptionsimportValidationErrorfromdjango.dbimportmodelsclassBadFooError(ValidationError):passclassBar(models.Model):description=models.CharField(max_length=20)cl

python - 实现前置附加参数的 functools.partial

functools.partial的文档说它“大致相当于”:defpartial(func,*args,**keywords):defnewfunc(*fargs,**fkeywords):newkeywords=keywords.copy()newkeywords.update(fkeywords)returnfunc(*(args+fargs),**newkeywords)#linetochangenewfunc.func=funcnewfunc.args=argsnewfunc.keywords=keywordsreturnnewfunc如果我想实现一个前置附加参数的版本,看来我