Sobes.tech
Middle

Proqramlaşdırma kontekstində dekorator nədir?

sobes.tech Süni İntellekt

AI-dan cavab

Dekorator, obyektlərə dinamik olaraq yeni vəzifələr əlavə etməyə imkan verən struktur dizayn nümunəsidir və onları xüsusi dekorator obyektləri ilə əhatə edir. Bu, funksionallığı genişləndirmək üçün irsən daha çevik alternativ təqdim edir.

Əsas fikirlər:

  • Əhatə etmə: Dekorator, əhatə olunan obyektə istinad saxlayır.
  • Vəkalət: Dekorator, metod çağırışlarını əhatə olunan obyektə vəkil edir və çağırışdan əvvəl və ya sonra əlavə məntiq yerinə yetirə bilər.
  • Funksionallığın genişləndirilməsi: Obyektlərin strukturunu dəyişmədən və ya alt siniflərdən istifadə etmədən davranış əlavə etməyə imkan verir.

QA Avtomatizasiyasında tətbiqi:

  • Hərəkətlərin qeydiyyatı: Səhifə elementləri ilə qarşılıqlı əlaqə metodlarına qeydiyyat əlavə etmək.
  • İstisna idarəetməsi: Funksiya çağırışlarına ümumi istisna idarəetməsi əlavə etmək.
  • Təkrar cəhdlər: Flaky testlər və ya hərəkətlər üçün təkrar cəhd mexanizmi tətbiq etmək.
  • Pre/post-şərtlərin enjekte edilməsi: Testin əsas mərhələsindən əvvəl və ya sonra müəyyən hərəkətlər yerinə yetirmək.

Python nümunəsi:

def log_method_call(func):
    # Funksiyanı qeyd edən dekorator
    def wrapper(*args, **kwargs):
        print(f"Funksiya çağırılır: {func.__name__} args ilə: {args}, kwargs ilə: {kwargs}")
        result = func(*args, **kwargs)
        print(f"{func.__name__} funksiyası geri qaytardı: {result}")
        return result
    return wrapper

class PageObject:
    def __init__(self, driver):
        self.driver = driver

    @log_method_call
    def click_button(self, locator):
        # Dekorator istifadə edən metod
        print(f"Elementə kliklənir: {locator}")
        # Driverin hərəkətinin simulasyonu
        # self.driver.find_element(*locator).click()
        return "Düymə klikləndi"

# İstifadə
# driver = ... # Driverin başlanğıcı
# page = PageObject(driver)
# page.click_button(("ID", "submit_button"))