পরীক্ষার ক্ষেত্রে ব্যবহৃত "সেটআপ" এবং "টিয়ারডাউন" পাইথন পদ্ধতি ব্যাখ্যা কর


96

টেস্ট কেসগুলি লেখার সাথে সাথে পরীক্ষার পদ্ধতি কল করার আগে তাত্ক্ষণিক ডাকা হয় এবং ডাকা হওয়ার সাথে সাথেই ডেকে আনা হলে যে কেউ পাইথনের ব্যবহার setUptearDownপদ্ধতিগুলি ব্যাখ্যা করতে পারে ?setUptearDown

উত্তর:


87

সাধারণভাবে আপনি সেটআপের জন্য সমস্ত পূর্বশর্ত পদক্ষেপ এবং টিয়ারডাউনতে সমস্ত ক্লিন-আপ পদক্ষেপ যুক্ত করেন।

আপনি উদাহরণ সহ আরও পড়তে পারেন এখানে

যখন একটি সেটআপ () পদ্ধতি সংজ্ঞায়িত করা হয়, পরীক্ষার রানার প্রতিটি পরীক্ষার আগে সেই পদ্ধতিটি চালাবেন। একইভাবে, যদি একটি টিয়ারডাউন () পদ্ধতিটি সংজ্ঞায়িত করা হয়, তবে পরীক্ষক রানার প্রতিটি পরীক্ষার পরে সেই পদ্ধতিটি শুরু করবেন।

উদাহরণস্বরূপ আপনার একটি পরীক্ষা রয়েছে যা আইটেমগুলির অস্তিত্বের প্রয়োজন, বা নির্দিষ্ট রাজ্যের প্রয়োজন - তাই আপনি এই ক্রিয়াগুলি (অবজেক্ট ইনস্ট্যান্স তৈরি করা, ডিবি আরম্ভকরণ, বিধি প্রস্তুতকরণ ইত্যাদি) সেটআপে রেখেছেন।

এছাড়াও আপনি যেমন জানেন যে প্রতিটি পরীক্ষা যেখানে শুরু হয়েছিল সেখানে থামানো উচিত - এর অর্থ হ'ল আমাদের অ্যাপ্লিকেশন রাষ্ট্রটিকে তার প্রাথমিক অবস্থায় পুনরুদ্ধার করতে হবে - যেমন ফাইলগুলি, সংযোগগুলি বন্ধ করা, সদ্য নির্মিত আইটেমগুলি সরিয়ে ফেলা, লেনদেন কলব্যাক কল করা ইত্যাদি - এই সমস্ত টিয়ারডাউনটিতে পদক্ষেপগুলি অন্তর্ভুক্ত করতে হবে।

সুতরাং ধারণাটি হ'ল পরীক্ষায় নিজেই কেবল এমন ক্রিয়াকলাপ থাকা উচিত যা ফলাফল পাওয়ার জন্য পরীক্ষার অবজেক্টে সঞ্চালিত হয়, যখন সেটআপ এবং টিয়ারডাউন এমন একটি পদ্ধতি যা আপনাকে নিজের পরীক্ষার কোডটি পরিষ্কার এবং নমনীয় রাখতে সহায়তা করে।

একগুচ্ছ পরীক্ষার জন্য আপনি একটি সেটআপ এবং টিয়ারডাউন তৈরি করতে পারেন এবং তাদের পিতামাতার ক্লাসে সংজ্ঞায়িত করতে পারেন - সুতরাং এই জাতীয় পরীক্ষাগুলি সমর্থন করা এবং সাধারণ প্রস্তুতিগুলি আপডেট করা এবং ক্লিন আপগুলি আপনার পক্ষে সহজ হবে।

আপনি যদি একটি সহজ উদাহরণ সন্ধান করছেন তবে দয়া করে উদাহরণ সহ নীচের লিঙ্কটি ব্যবহার করুন


57

আপনি টেস্ট স্যুটে সমস্ত পরীক্ষার জন্য কোড সাধারণ ফ্যাক্ট করতে ব্যবহার করতে পারেন।

যদি আপনার পরীক্ষাগুলিতে প্রচুর পুনরাবৃত্তি কোড থাকে তবে আপনি এই কোডটি সেটআপ / টিয়ারডাউন এ সরানোর মাধ্যমে এগুলি আরও খাটো করতে পারেন।

আপনি এটি পরীক্ষার ডেটা তৈরি করার জন্য ব্যবহার করতে পারেন (যেমন: ফেক / মকস সেট আপ), বা জাল দিয়ে ফাংশনগুলি আটকানো।

আপনি যদি ইন্টিগ্রেশন টেস্টিং করে থাকেন তবে আপনি সেটআপে পরিবেশগত প্রাক-শর্তগুলি পরীক্ষা করতে পারেন এবং কিছু সঠিকভাবে সেট আপ না করা থাকলে পরীক্ষাটি এড়িয়ে যেতে পারেন।

উদাহরণ স্বরূপ:

class TurretTest(unittest.TestCase):

    def setUp(self):
        self.turret_factory = TurretFactory()
        self.turret = self.turret_factory.CreateTurret()

    def test_turret_is_on_by_default(self):
        self.assertEquals(True, self.turret.is_on())

    def test_turret_turns_can_be_turned_off(self):
        self.turret.turn_off()
        self.assertEquals(False, self.turret.is_on())

17
+1 কারণ 9 টি কোডের কোডটি আমার 100% ছাঁটাই করা দরকার। মার্জিত, সংক্ষিপ্ত উদাহরণ। সত্যি কথা বলতে কি সেই 9 টি লাইনই আমি প্রশ্ন ছাড়া অন্য পৃষ্ঠায় পড়েছি, যা আমার প্রশ্নও ছিল। কোড নমুনার আগে আপনি কি ইংরেজিতে কিছু বলেছেন? এটি প্রয়োজন ছিল না! কোডটি সব বলেছে! ধন্যবাদ ম্যাট
নাথান সি ট্রেশ

4
এখানে কীভাবে "কিছু ঠিকঠাকভাবে সেট আপ না করা হলে পরীক্ষাটি এড়িয়ে যান" তা আমি পরিষ্কার নই। নাকি তা কি একপাশে ছিল?
ব্যবহারকারী5359531

6

ধরুন আপনার কাছে 10 টি পরীক্ষার স্যুট রয়েছে। পরীক্ষার মধ্যে 8 টি একই সেটআপ / টিয়ারডাউন কোড ভাগ করে দেয়। অন্য 2 না।

সেটআপ এবং টিয়ারডাউন আপনাকে সেই 8 টি পরীক্ষার রিফ্যাক্টর করার একটি দুর্দান্ত উপায় দেয়। এখন আপনি অন্যান্য 2 টি পরীক্ষা দিয়ে কী করবেন? আপনি এগুলিকে অন্য টেস্টকেস / স্যুটে নিয়ে যেতে চাইবেন। সুতরাং সেটআপ এবং টিয়ারডাউন ব্যবহার করে পরীক্ষাগুলি কেস / স্যুটে বিভক্ত করার একটি প্রাকৃতিক উপায় প্রদান করতে সহায়তা করে


4
কখনও কখনও এটি অন্য টেস্টকেসে পরীক্ষাগুলি সরিয়ে নেওয়া অনাকাঙ্ক্ষিত হয়। এই ক্ষেত্রে আপনি সেটআপ / টিয়ারডাউন কোড সহ একটি সজ্জনকারী লিখতে পারেন এবং কেবলমাত্র পছন্দসই পরীক্ষার কার্যগুলি সজ্জিত করতে পারেন।
ম্যাথিজগুলি

4
এটি কোনওভাবেই প্রশ্নের উত্তর নয়।
জেনেটে
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.