mozilla
আপনার অনুসন্ধান ফলাফল

    অংশ ৮: একটি বেস ক্লাস ব্যবহার করা

    This translation is incomplete. Please help translate this article from English.

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

    test_base.py

    প্রথমত, একটি নতুন ফাইল তৈরি করুন test_base.py,  আপনার টেস্ট কেইস হিসেবে একিই ডিরেক্টরির মধ্যে।

    পরবর্তীতে, আপনার প্রয়োজনীয় স্টেটমেন্ট যা সাধারণ সেট আপ এর সাথে সম্পর্কযুক্ত (unittest, Marionette and time) ফাইলটিতে সরিয়ে ফেলুন, একটি TestBase ক্লাস সহ যার মধ্যে setUp() and tearDown() মেথডগুলো, এবং সাহায্যকারি সাধারণ helper ফাংশনগুলো আছে (such as unlock_screen())। ফাইলটি কিছুটা এরকম দেখানো উচিত:

    import time
    import unittest
    from marionette import Marionette
    
    
    class TestBase(unittest.TestCase):
    
        def unlock_screen(self):
            self.marionette.execute_script('window.wrappedJSObject.lockScreen.unlock();')
    
        def kill_all(self):
            self.marionette.switch_to_frame()
            self.marionette.execute_async_script("""
                 // Kills all running apps, except the homescreen.
                 function killAll() {
                   let manager = window.wrappedJSObject.AppWindowManager;
    
                   let apps = manager.getApps();
                   for (let id in apps) {
                     let origin = apps[id].origin;
                     if (origin.indexOf('homescreen') == -1) {
                       manager.kill(origin);
                     }
                   }
                 };
                 killAll();
                 // return true so execute_async_script knows the script is complete
                 marionetteScriptFinished(true);
                """)
    
        def setUp(self):
             # Create the client for this session. Assuming you're using the default port on a Marionette instance running locally
            self.marionette = Marionette()
            self.marionette.start_session()
    
            # Unlock the screen
            self.unlock_screen()
    
            # kill all open apps
            self.kill_all()
    
            # Switch context to the homescreen iframe and tap on the contacts icon
            time.sleep(2)
            home_frame = self.marionette.find_element('css selector', 'div.homescreen iframe')
            self.marionette.switch_to_frame(home_frame)
    
    
        def tearDown(self):
            # Close the Marionette session now that the test is finished
            self.marionette.delete_session()
    

    আপনার টেস্ট ফাইল আপডেট করা

    আপনার test_base.py ফাইল তৈরি হওয়ার পর, আপনাকে আপনার টেস্ট ফাইলে  TestBase ইমপোর্ট করতে হবে, এবং টেস্ট ক্লাসগুলো  TestBase ক্লাস প্রসারিত করতে পরিবরতন করতে হবে:

    import unittest
    from marionette import Wait
    from marionette import By
    from test_base import TestBase
     
    class TestContacts(TestBase):
    
        def test(self):
            # Tests in here
     
    if __name__ == '__main__':
        unittest.main()

    পুনরায় আপনার টেস্ট ফাইল চালানোর চেষ্টা করুন

    এটা এখন অনেক বেশি বোঝা না যেতে পারে কিন্তু যখন আপনার কয়েক ডজন অথবা শতাধিক টেস্ট থাকবে  এটি আসলেই অনেক কোড ডুপ্লিকেট হওয়ার সমস্যা যাতে না হয় সাহায্য করবে।

    ডকুমেন্ট ট্যাগ এবং অবদানকারী

    Contributors to this page: mimzi_fahia
    সর্বশেষ হালনাগাদ করেছেন: mimzi_fahia,
    সাইডবার লুকানো