luigi パラメータのデフォルト値を提供するものをモックしようとしています。
私が達成しようとしていることを示す愚かな例:
テスト中のタスク:
import luigi
from bar import Bar
bar = Bar()
class Baz(luigi.Task):
qux = luigi.Parameter(default=bar.bar())
def baz(self):
return self.qux;
def foo(self):
return bar.bar()
単体テスト コード:
import unittest
from mock import Mock, patch
from sut.baz import Baz
class TestMocking(unittest.TestCase):
def test_baz_bar(self):
self.assertEquals("bar", Baz().baz())
@patch('sut.baz.bar')
def test_patched_baz(self, mock_bar):
mock_bar.bar = Mock(return_value="foo")
self.assertEquals("foo", (Baz().baz()))
@patch('sut.baz.bar')
def test_patched_foo(self, mock_bar):
mock_bar.bar = Mock(return_value="foo")
self.assertEquals("foo", (Baz().foo()))
luigi.Parameter ロジックは、パッチよりも前に発生しているようです。
この例では、test_patched_foo
合格とtest_patched_baz
不合格です。したがって、パッチは発生しますが、luigi.Parameter(default=bar.bar())
回線からの呼び出しの後に発生します。
この方法で呼び出されたものをモックしてパッチを当てることは可能ですか?