Ripristino / pulizia dati test WatiN
-
03-07-2019 - |
Domanda
Mi chiedo come le persone stiano attualmente ripristinando i loro dati / ripulendo i resti dei test per i test WatiN / Wartir?
Ad esempio, supponiamo che esista un test per aggiungere un utente al sistema e il nome utente deve essere univoco. Ovviamente la prima esecuzione senza alcun utente dovrebbe funzionare correttamente, ma la seconda esecuzione fallirà senza intervento manuale.
Soluzione
Ci sono un paio di strategie che potresti fare per questo, presumo che tu stia usando WatiN, con i test Nunit o VS Unit per eseguire i tuoi test.
Usa transazioni Un approccio che viene utilizzato durante il test di unità è che "avvolgi" l'intero test in una transazione e al completamento del test eseguono il rollback della transazione. In .net è possibile utilizzare System.Transactions per questo.
Crea una pagina " stub " Crea una pagina nella tua applicazione che utilizza la logica aziendale esistente per eliminare i tuoi dati. Questa pagina dovrebbe essere protetta e idealmente nemmeno implementata nella produzione. Questo è l'approccio che consiglierei.
Chiama un servizio web Sviluppa un servizio Web o chiamane uno direttamente dal livello app dell'applicazione per eseguire l'eliminazione. Probabilmente dovrai sviluppare anche questo.
Pulisci direttamente Crea alcune classi nel tuo codice di prova per accedere ai dati e pulirli.
Con uno di questi è necessario ripulire prima e dopo aver eseguito il test, ovvero nell'impostazione del test e nei metodi di pulizia del test. Il motivo per farlo due volte è che dovresti presumere che il tuo test non sia andato a buon fine e non sia stato corretto correttamente.
Usa Linq per SQL AFAIK se stai usando Linq per SQL, funziona in memoria e racchiude automaticamente l'intero aggiornamento in una transazione. Se semplicemente non si chiama SubmitChanges (); quindi dovresti andare bene, ma non l'ho provato io stesso.
Altri suggerimenti
Ho chiesto a uno sviluppatore di creare uno script che ripristinerà il database. Dopo una serie di test, chiamo solo quello script e inizio da un database pulito.
Mike: la tua domanda non è unica per Watir / WatiN. Si applica a qualsiasi test dell'interfaccia utente, quindi cerca soluzioni simili per Selenium, Windmill e persino test di integrazione senza testa (HtmlUnit, test API, ecc.). Ho risposto a questa domanda un paio di volte personalmente su StackOverflow.
WatiN è per il test dell'interfaccia utente.
Per testare lo scenario che stai cercando, puoi generare l'id utente usando il codice c # che lo renderà univoco (rispetto al modo in cui è memorizzato quando hai creato il test).