Dividere una singola classe in più classi

1

Sto scrivendo script di test automatici con Selenium Webdriver (Python) e cerco di seguire le corrette pratiche di programmazione, in particolare le metodologie Object Oriented, ove possibile.

Al momento, rappresento ogni scenario di test come una singola classe. Questa classe ha fondamentalmente la seguente struttura:

  1. Importazioni (moduli Selenium e materiale Python)
  2. Configurazione della registrazione
  3. Definizione della classe che include quanto segue:
    • Inizializzazione istanza driver
    • Variabili dello scenario di test specifico
    • Metodi generici (alcuni wrapper creati che vengono utilizzati in più scenari di test)
    • Metodi specifici dell'applicazione

Quindi è qualcosa del genere:

imports
logging

class AppName(object):
    def __init__(self):
        self.driver = webdriver.Chrome()

        self.localAppVar = "..."
        ...

    def genericFunction(self):
        #This is a generic function that is going to be used in many other test scenarios as well as in this one

    def specificAppFunction(self):
        #This is a specific application function. This function is only relevant withing this test. This function will use "genericFunction" internally.

app = AppName() #Initialize an AppName object
app.specificAppFunction()

...

Quello che vorrei fare è separare la classe di cui sopra in 2 nuove classi e un file di avvio:

  1. Classi di funzioni generiche. Questo definirà l'oggetto driver e tutte le funzioni generiche che verranno utilizzate da più test.

  2. Funzioni specifiche Classe. Questo conterrà la funzione specifica dell'applicazione che è irrilevante per altre applicazioni.

  3. Il file di avvio che inizializzerà \ istanzia le classi sopra menzionate e controllerà lo scenario a un livello superiore. (tipo main in C se preferisci).

L'idea di cui sopra ha senso per me, ma sono un po 'confuso riguardo all'approccio pratico. Come dovrebbe essere implementato correttamente?

Stavo pensando alle seguenti opzioni:

  1. Creazione di un'istanza di classe generica con una specifica classe di applicazione.
  2. Rendi la classe generica una classe base e poi ereditala in base a una specifica classe di applicazione.

Non sono sicuro dei pro e dei contro di entrambi gli approcci e attualmente sono un po 'bloccato con l'implementazione. Sarebbe bello se qualcuno potesse darmi qualche idea su come tale attività dovrebbe essere implementata.

Spero che la mia domanda sia abbastanza chiara. Se non lo è, si prega di commentare e io elaborerò o / e modificherò.

    
posta Eugene S 08.01.2015 - 09:29
fonte

1 risposta

4

Le funzioni generiche dovrebbero non andare nelle classi. Python non è Java, non richiede funzioni pure per vivere all'interno delle classi. Utilizzare solo le classi se si desidera memorizzare lo stato di qualche tipo. Inserisci le funzioni in un modulo di utilità autonomo e importalo nel modulo che contiene le tue classi di test.

    
risposta data 08.01.2015 - 11:02
fonte

Leggi altre domande sui tag