Sobes.tech
Middle

Programlama bağlamında dekoratör nedir?

sobes.tech yapay zeka

AI'dan gelen yanıt

Dekoratör, nesnelerin dinamik olarak yeni sorumluluklar eklemesine olanak tanıyan yapısal bir tasarım desenidir ve onları özel dekoratör nesneleriyle sarmalayarak çalışır. İşlevselliği genişletmek için kalıtıma daha esnek bir alternatif sunar.

Ana fikirler:

  • Sarmalama: Dekoratör, sarmalanan nesneye bir referans içerir.
  • Delegasyon: Dekoratör, metod çağrılarını sarmalanan nesneye devreder ve çağrı öncesi veya sonrası ek mantık yürütebilir.
  • İşlevselliğin genişletilmesi: Nesnelerin yapılarını değiştirmeden veya alt sınıflar kullanmadan davranış eklemeye olanak tanır.

QA Otomasyonunda Uygulama:

  • İşlem kaydı: Sayfa öğeleriyle etkileşim metodlarına günlük kaydı ekleme.
  • İstisna yönetimi: Fonksiyon çağrılarına evrensel istisna işleme ekleme.
  • Tekrar denemeler: Flaky testleri veya işlemleri tekrar etme mekanizması uygulama.
  • Ön/son koşulların enjekte edilmesi: Testin ana adımından önce veya sonra belirli işlemler yapma.

Python ile örnek:

def log_method_call(func):
    # Fonksiyon çağrısını kaydeden dekoratör
    def wrapper(*args, **kwargs):
        print(f"Fonksiyon çağrısı: {func.__name__} args: {args}, kwargs: {kwargs}")
        result = func(*args, **kwargs)
        print(f"{func.__name__} fonksiyonu döndürdü: {result}")
        return result
    return wrapper

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

    @log_method_call
    def click_button(self, locator):
        # Dekoratör kullanan metod
        print(f"Öğe tıklanıyor: {locator}")
        # Sürücü eyleminin simülasyonu
        # self.driver.find_element(*locator).click()
        return "Buton Tıklandı"

# Kullanım
# driver = ... # Sürücü başlatma
# page = PageObject(driver)
# page.click_button(("ID", "submit_button"))