Condividi tramite


Esecuzione di test basati sui dati

Assicurarsi di conoscere come creare test basati sui dati e come eseguire test con TAEF prima di iniziare con suggerimenti e consigli per eseguire DataDrivenTests con TAEF . Potrebbe essere utile aggiornare la memoria anche sul funzionamento della query di selezione con TAEF.

Questa sezione illustra in particolare l'esecuzione di test basati su dati basati su tabelle, ma lo stesso principio di base si applica anche ai test basati su DATI basati su PICT e WMI.

Se si vogliono eseguire solo tutti i test, inclusi i test basati sui dati, non esiste alcuna differenza rispetto a come normalmente viene eseguita con TAEF. Si consideri un esempio di esecuzione di CPP\DataDrivenExample e CSharp\DataDrivenExample insieme usando TAEF. Tenere presente che per impostazione predefinita TAEF esegue test out-of-process. Se si desidera eseguirli inproc, usare l'opzione "/inproc".

TE.exe Examples\CPP.DataDriven.Example.dll Examples\CSharp.DataDriven.Example.dll

Esaminare i file xml e i file di intestazione che specificano i metadati. Eseguire solo i test di datadriven con priority=1 come indicato di seguito:

TE.exe Examples\*.Tests.dll /select:"@DataSource=* And @Priority=1"

Tenere presente che i metadati specificati a livello di riga nel file xml eseguono l'override dei metadati specificati a livello di creazione testMethod.

Si esaminerà ora un po' più della potenza dell'esecuzione di test basata sui dati con TAEF. Si supponga di voler riprovare solo la terza riga nella funzione FirstTable(). A tale scopo, è possibile usare l'indice della riga, che sarà 2 (indice inizia da 0):

TE.exe Examples\CPP.DataDriven.Example.dll /select:"@Name='*FirstTable*' and @Data:index=2"

Si noti che il criterio di selezione include ora un nuovo spazio dei nomi "@Data:" che può essere usato specificamente per i test basati sui dati. Quando si esegue il test precedente, si noterà che invece del consueto "#index" che viene aggiunto ai nomi dei test in caso di test guidati dai dati, è stato aggiunto "#Black" al nome del test. Si tratta dei metadati "Name" speciali specificati per questa riga. Per informazioni dettagliate, vedere Specifica dei metadati a livello di riga. Nonostante questo nome speciale, è comunque possibile selezionare usando il nome. La selezione dell'indice può andare a lungo per selezionare un intervallo di righe per un set di dati davvero di grandi dimensioni. Ad esempio (ipotetico , non nell'esempio) se si dispone di test basati sui dati con 100 righe (indice massimo = 99) e si vogliono eseguire solo righe con indice maggiore di 10 e minore di 20, è ora possibile specificare facilmente come:

TE.exe Examples\*.Tests.dll /select:"@Name='*MyDataDrivenTest*' and @Data:index > 10 and @Data:index < 20"

Molte volte, è consigliabile riprovare in base a un valore di dati specifico e non dover esaminare i problemi di ricerca dell'indice. In questo caso è possibile usare di nuovo lo spazio dei nomi "@Data:". Si supponga ora che nell'esempio nativo di unit test (vedere Creazione di test basati sui dati), si vogliono eseguire solo i casi in cui "Theme" è "AeroBasic".

TE.exe Examples\CPP.DataDriven.Example.dll Examples\CSharp.DataDriven.Example.dll /select:"@Data:Theme='AeroBasic'"

Verrà visualizzato nella console come indicato di seguito:

StartGroup: WEX::TestExecution::Examples::DataDrivenTests::SecondTable#2 [Process: 3588; Thread: 4584]
I am in second table.
Theme supplied as AeroBasic
EndGroup: WEX::TestExecution::Examples::DataDrivenTests::SecondTable#2 [Passed]
Summary: Total=1, Passed=1, Failed=0, Blocked=0, Not Run=0, Skipped=0

È anche possibile usare /listproperties per i test di datadriven per visualizzare i set di dati e i metadati (combinazione di metadati specificati a livello di metodo di test e di riga) per il test guidato dai dati. Quindi

TE.exe Examples\CSharp.DataDriven.Examples.dll /listproperties

elenca tutti i metodi (datadriven e in caso contrario) insieme ai metadati e ai valori di dati disponibili e specificati a vari livelli.

Esaminare l'override dei metadati a livello di riga, specificando i tipi di parametri di matrice e l'esempio semplice basato sui dati, ad esempio procedure dettagliate che forniscono altre informazioni dettagliate.