কীভাবে একটি আমদানিকে উপহাস করবেন, (মাকে এবি)?
মডিউল এ এর শীর্ষে আমদানি বি অন্তর্ভুক্ত।
সহজ, লাইব্রেরিটি sys.modules এ আমদানি করার আগে কেবল তাড়িত করুন:
if wrong_platform():
sys.modules['B'] = mock.MagicMock()
এবং তারপরে, যতক্ষণ A
না বি এর অবজেক্টগুলি থেকে নির্দিষ্ট ধরণের ডেটা ফেরত আসার উপর নির্ভর করে:
import A
শুধু কাজ করা উচিত।
আপনি উপহাস করতে পারেন import A.B
:
আপনার সাবমডিউলগুলি থাকলেও এটি কাজ করে তবে আপনি প্রতিটি মডিউলকে উপহাস করতে চাইবেন। বলুন আপনার কাছে এটি রয়েছে:
from foo import This, That, andTheOtherThing
from foo.bar import Yada, YadaYada
from foo.baz import Blah, getBlah, boink
উপহাস করার জন্য, উপরের মডিউলটি আমদানি করার আগে কেবল নীচেটি করুন:
sys.modules['foo'] = MagicMock()
sys.modules['foo.bar'] = MagicMock()
sys.modules['foo.baz'] = MagicMock()
(আমার অভিজ্ঞতা: আমার একটি নির্ভরতা ছিল যা একটি প্ল্যাটফর্ম উইন্ডোজে কাজ করে তবে লিনাক্সে কাজ করে না, যেখানে আমরা আমাদের প্রতিদিনের পরীক্ষা চালাই So সুতরাং আমাদের পরীক্ষার জন্য আমার নির্ভরতা উপহাস করার দরকার ছিল Luck ভাগ্যক্রমে এটি একটি ব্ল্যাক বক্স ছিল, তাই আমার প্রচুর ইন্টারঅ্যাকশন সেটআপ করার দরকার নেই))
মজাদার পার্শ্ব প্রতিক্রিয়া
সংযোজন: আসলে, আমার একটি পার্শ্ব-প্রতিক্রিয়াটি অনুকরণ করা দরকার যা কিছুটা সময় নিয়েছিল। সুতরাং আমার জন্য একটি সেকেন্ডের জন্য ঘুমানোর জন্য কোনও অবজেক্টের পদ্ধতি প্রয়োজন। এটি এইভাবে কাজ করবে:
sys.modules['foo'] = MagicMock()
sys.modules['foo.bar'] = MagicMock()
sys.modules['foo.baz'] = MagicMock()
# setup the side-effect:
from time import sleep
def sleep_one(*args):
sleep(1)
# this gives us the mock objects that will be used
from foo.bar import MyObject
my_instance = MyObject()
# mock the method!
my_instance.method_that_takes_time = mock.MagicMock(side_effect=sleep_one)
এবং তারপরে কোডটি বাস্তব পদ্ধতির মতো চলতে কিছুটা সময় নেয়।
Mock
কিছু জাদু বৈশিষ্ট্যাবলী (প্যাচ করা হবে না__%s__
) -এর মত__name__
।