Please note, this is a STATIC archive of website developer.mozilla.org from 03 Nov 2016, cach3.com does not collect or store any user information, there is no "phishing" involved.

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

এখন একাধিক টেস্টের পর আপনি সম্ভবত আপনি আপনার অগ্রগতি সম্পর্কে বেশ ভাল অনুভব করছেন। তবে আরও কোড দক্ষতা উন্নত করার অন্যান্য উপায় আছে— আপনি হয়তো খেয়াল করছেন যে এ পর্যন্ত আপনাকে 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: chrisdavidmills, Bolaram, mimzi_fahia
 সর্বশেষ হালনাগাদ করেছেন: chrisdavidmills,