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"))