1

私はモック 1.0.1 ( http://www.voidspace.org.uk/python/mock/ ) を使用してテストでオブジェクトをモックしています。このアプローチを使用して日付をモックできます。

def dateStub():
    return timezone.make_aware(datetime(2013, 1, 1, 10, 30), timezone.utc)


@patch('django.utils.timezone.now', dateStub)
def testFoo(self):
    ...

しかし、今私はクラスをモックしようとしていますが、同じアプローチが期待どおりに機能していません:

class FakeClass(OriginalClass)
    def method(self):
        pass


@patch('myapp.mymodule.OriginalClass', FakeClass)
def testFoo(self):
    ...

また、 @path.object を使用してクラスメソッドのみを置き換えてみましたが、うまくいきませんでした...テストでクラスをモックする正しい方法は何ですか? (クラスは、テストしているクラスによって内部的に使用されます)

4

1 に答える 1

2

解決しました!

実用的なソリューションは次のとおりです。

...
from myapp.mymodule.OriginalClass import OriginalClass

def methodStub(self):
    return

class TestMyClass(TestCase):

    @patch.object(OriginalClass, 'method', methodStub)
    def testFoo(self):
        ...
于 2013-11-05T14:22:36.027 に答える