インポートされたモジュールの関数@patch
を理解したいと思います。Pythonインポートされたモジュールの関数を模倣する
これまでのところ、これがここにあります。
アプリ/ mocking.py:
from app.my_module import get_user_name
def test_method():
return get_user_name()
if __name__ == "__main__":
print "Starting Program..."
test_method()
アプリ/ my_module/__ init__.py:
def get_user_name():
return "Unmocked User"
テスト/ mock-test.py:
import unittest
from app.mocking import test_method
def mock_get_user():
return "Mocked This Silly"
@patch('app.my_module.get_user_name')
class MockingTestTestCase(unittest.TestCase):
def test_mock_stubs(self, mock_method):
mock_method.return_value = 'Mocked This Silly')
ret = test_method()
self.assertEqual(ret, 'Mocked This Silly')
if __name__ == '__main__':
unittest.main()
これはではなく、の仕事を期待しています。 「patched」モジュールは、単に、ロックされていない値get_user_name
を返します。テスト中の名前空間にインポートする他のパッケージからメソッドをモックするにはどうすればよいですか?
質問は「からかっベストプラクティス」についてまたはあなたがやっていることは理にかなっているかどうかではないでしょうか?最初は、Python3.3 +に含まれている['Mock'](http://www.voidspace.org.uk/python/mock/)のような模倣ライブラリを使用すると言っていましたが、[' unittest .mock'](http://docs.python.org/dev/library/unittest.mock)を参照してください。 – Bakuriu
私はこの権利について行くかどうか尋ねています。私はモックを見ましたが、この特定の問題を解決する方法はありません。私がモックで行ったことを再現する方法はありますか? – nsfyn55