单元测试Python mixin,其中引用了在别处定义的函数

2024-09-25 04:30:47 发布

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

我有以下情况:

mixin_foo.py
   class Foo:
      def doFoo(self):
        bar=self.defined_elsewhere()
        #....do work

单元测试:

@patch('path_to_mixin_foo.mixin_foo.Foo.defined_elsewhere')
def test_do_foo(self, definedElsewhere)
    definedElsewhere.return_value = bar1
    self.FooTester.doFoo()

在从该mixin派生的类中定义了defined_healthe()方法。然而,出于开发目的,我们正在努力在将_foo.foo与类集成之前先混合_foo.foo。但是,当我尝试对doFoo方法进行单元测试时,pytest显示了以下错误:Attributeerror<&燃气轮机;没有“在别处定义的”属性。 我的补丁是否正确?是否有其他方法可以对该方法进行单元测试?基本上,我想在别处模拟self.defined_的调用/返回值,以便测试doFoo方法


Tags: 方法pyself定义foodef情况单元测试
1条回答
网友
1楼 · 发布于 2024-09-25 04:30:47

您的方法的问题是您试图修补一个不存在的属性。无法修补defined_elsewhere,因为它未在Foo中定义,但可以从Foo派生,添加方法,并修补Foo类:

class TestFoo(path_to_mixin_foo.Foo):
    def do_something(self):
        return bar1


@patch('path_to_mixin_foo.mixin_foo.Foo', TestFoo)
def test_do_foo(self)
    self.FooTester.doFoo()

相关问题 更多 >