Delen via


Gegevensgestuurde tests uitvoeren

Zorg ervoor dat u op de hoogte bent van het schrijven van gegevensgestuurde tests en het uitvoeren van tests met TAEF voordat u begint met tips en trucs voor het uitvoeren van DataDrivenTests met TAEF. Het kan handig zijn om uw geheugen te vernieuwen over de werking van selectiequery's met TAEF.

In deze sectie wordt specifiek gesproken over het uitvoeren van gegevensgestuurde tests op basis van tabellen, maar hetzelfde basisprincipe is van toepassing op op PICT gebaseerde en op WMI gebaseerde gegevensgestuurde tests.

Als u alleen al uw tests wilt uitvoeren, inclusief gegevensgestuurde tests, is er geen verschil van hoe u deze normaal gesproken zou uitvoeren met TAEF. Laten we eens kijken naar een voorbeeld van het uitvoeren van onze CPP\DataDrivenExample en CSharp\DataDrivenExample met behulp van TAEF. Houd er rekening mee dat TAEF standaard tests uitvoert buiten het proces (out-of-proc). Als u ze inproc wilt uitvoeren, gebruik de optie '/inproc'.

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

Bekijk de XML-bestanden en headerbestanden die de metagegevens opgeven. Voer als volgt alleen de datadriven-tests uit die priority=1 hebben:

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

Houd er rekening mee dat metagegevens die zijn opgegeven op rijniveau in het XML-bestand, de metagegevens overschrijft die zijn opgegeven op het ontwerpniveau TestMethod.

Laten we eens kijken naar de kracht van gegevensgestuurde testuitvoering met TAEF. Stel dat je alleen de 3e rij in de functie FirstTable() wilt reproduceren. U kunt dit doen met behulp van de index van de rij, die 2 is (index begint bij 0):

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

U ziet dat het selectiecriterium nu een nieuwe naamruimte '@Data:' heeft, die specifiek kan worden gebruikt voor gegevensgestuurde tests. Wanneer u de bovenstaande test uitvoert, zult u merken dat in plaats van de gebruikelijke '#index' die wordt toegevoegd aan testnamen in het geval van gegevensgestuurde tests, u '#Black' hebt toegevoegd aan de testnaam. Dit zijn de speciale metagegevens 'Naam' die voor deze rij zijn opgegeven. Zie Metagegevens opgeven op rijniveau voor meer informatie. Ondanks deze speciale naam kunt u nog steeds met de naam selecteren. Met de indexselectie kunt u een groot aantal rijen selecteren voor een zeer grote gegevensset. Als u bijvoorbeeld een gegevensgestuurde test hebt met 100 rijen (max. index = 99) en u alleen rijen wilt uitvoeren met index groter dan 10 en kleiner dan 20, kunt u dit nu eenvoudig opgeven als:

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

Vaak zou u het opnieuw willen doen op basis van een bepaalde gegevenswaarde en niet de moeite hoeven te lopen om de index ervan te vinden. In dit geval kunt u de naamruimte '@Data:' opnieuw gebruiken. Stel nu in het systeemeigen voorbeeld van eenheidstests (zie Gegevensgestuurde tests ontwerpen), u wilt alleen die gevallen uitvoeren wanneer 'Thema' 'AeroBasic' is.

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

Dit wordt als volgt weergegeven op de console:

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

U kunt ook gebruikmaken van /listproperties voor datadriven-tests om de gegevenssets en de metagegevens (combinatie van metagegevens die zijn opgegeven op testmethodeniveau en rijniveau) te zien voor de gegevensgestuurde test. Dus

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

zal alle methoden (data-gedreven en anderszins) vermelden, samen met de beschikbare en opgegeven metagegevens en gegevenswaarden op verschillende niveaus.

Bekijk het overschrijven van metagegevens op rijniveau, het opgeven van matrixparametertypen en het eenvoudige gegevensgestuurde voorbeeld , bijvoorbeeld overzichten die meer inzicht bieden.