我们可以将一个函数和mocker传递给另一个函数进行mocking吗?

2024-06-16 15:02:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我希望将函数表单和mocker一起传递给测试类中的另一个函数,并期望函数在返回后被模拟。但是,它似乎不起作用,谢谢你的任何建议!在

class Cls():
   def submthd(self):
      return 0
   def mthd(self):
      a=self.submthd()
      return a

class Test_me(MockerTestCase):
   def setUp(self):
      pass

   def mockup(self,f,m):
      f = m.mock()
      f(ARGS)
      m.result(1)
      m.replay()

   def test_null(self):
      m=Mocker()
      o=Cls()
      self.mockup(o.submthd,m)
      self.assertEqual(o.mthd(),1)
      m.verify()

Tags: 函数testself表单returndef建议class
1条回答
网友
1楼 · 发布于 2024-06-16 15:02:27

我可能弄错了,但在我看来,您要做的似乎是用Python Mocker的说法称为"Patching"。您想更改现有的submthd()调用的行为。在

首先,您需要使用new style classes(例如object的子类)。让我们重新定义Cls()

class Cls(object):
    def submthd(self):
        return 0
    def mthd(self):
        return self.submthd()
    def submthd2(self):
        return 0
    def mthd2(self):
        return self.submthd()

我添加了submthd2mthd2,以演示如何在多个方法上使用mockup(...)方法,但其他情况下,您的类基本上没有变化。在

现在,为了在测试用例中使用修补程序,您需要执行以下操作:

^{pr2}$

当我将此代码作为单元测试运行时,我得到:

.
                                   
Ran 1 test in 0.002s

OK

相关问题 更多 >