İçe aktarılan bir modülden @patch
işlevinin nasıl kullanılacağını anlamak istiyorum.Python İçe aktarılan bir modülden bir işlevi atama
Buraya kadar uzak olduğum yer.
uygulama/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()
uygulama/my_module/__ init__.py: mock-test.py
def get_user_name():
return "Unmocked User"
testi /:
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()
Bu, beklediğim gibi çalışmaz. "Yamalı" modül sadece get_user_name
'un taşınmamış değerini döndürür. Test ettiğim bir ad alanına içe aktardığım diğer paketlerden nasıl yöntemleri alayım?
soru "alay en iyi uygulamalar" konusunda veya ne yaptığınızı mantıklı olsun veya olmasın mı? İlk olarak ['Mock'] (http://www.voidspace.org.uk/python/mock/) gibi alaycı bir kütüphane kullanmayı tercih ediyorum. .mock'] (http://docs.python.org/dev/library/unittest.mock). – Bakuriu
Bu hakkın olup olmadığını soruyorum. Mock'a baktım ama bu problemi çözmenin bir yolunu görmüyorum. Yukarıda Mock'ta yaptığım şeyi yeniden yaratmanın bir yolu var mı? – nsfyn55