Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Ez a szakasz az adatvezérelt tesztelés számos példáját ismerteti, és az egyes példák konkrét funkcióit ismerteti.
Az első példa egy egyszerű adatvezérelt teszt, az úgynevezett SimpleDataDrivenExample.
A felügyelt példában talál egy XML-fájlt, amely így néz ki:
1 <?xml version="1.0"?>
2 <Data>
3 <Table Id="Table1">
4 <ParameterTypes>
5 <ParameterType Name="Size">Int32</ParameterType>
6 <ParameterType Name="Color">String</ParameterType>
7 </ParameterTypes>
8 <Row>
9 <Parameter Name="Size">4</Parameter>
10 <Parameter Name="Color">White</Parameter>
11 </Row>
12 <Row>
13 <Parameter Name="Size">10</Parameter>
14 <Parameter Name="Color">Black</Parameter>
15 </Row>
16 <Row>
17 <Parameter Name="Size">9</Parameter>
18 <Parameter Name="Color">Orange</Parameter>
19 </Row>
20 <Row>
21 <Parameter Name="Size">9</Parameter>
22 <Parameter Name="Color">Blue</Parameter>
23 </Row>
24 </Table>
25 </Data>
Ez az XML-fájl határozza meg az adatvezérelt teszt felhasznált adatparamétereit. A legfelső XML-csomópont az <Adatcímke> , amely egy vagy több <táblacímkét> tartalmazhat. Minden táblát egyedi "ID" attribútummal kell társítani. A tesztfüggvények a táblaazonosító értékével azonosítják az XML-fájlban használni kívánt táblát.
<A Tábla> címkén belül van egy választható <ParameterTypes> szakasz. Itt explicit módon megadhatja egy adott paraméter adattípusát ParameterTypes-címkékkel<>. A fenti példában explicit módon adja meg, hogy a "Size" paraméter "Int32" típusú, a "Color" paraméter pedig egy sztring. Összegzés: A ParameterTypes szakasz nem kötelező. Ha a paramétertípus adatai nincsenek megadva, alapértelmezés szerint sztringként lesz mentve.
Ha összehasonlítja a felügyelt és a natív példákat, láthatja, hogy a kettő között az egyetlen különbség a <ParameterTypes> blokk. A natív XML-fájl a "int" natív egész számtípusú méretet adja meg, és az alapértelmezett WEX::Common::String típust használja a Szín típusához, ha nem adja meg. Az ön kényelme érdekében az alábbi példa a natív példából származó XML-fájlt mutatja be.
1 <?xml version="1.0"?>
2 <Data>
3 <Table Id="SimpleTable">
4 <ParameterTypes>
5 <ParameterType Name="Size">int</ParameterType>
6 </ParameterTypes>
7 <Row>
8 <Parameter Name="Size">4</Parameter>
9 <Parameter Name="Color">White</Parameter>
10 </Row>
11 <Row>
12 <Parameter Name="Size">10</Parameter>
13 <Parameter Name="Color">Black</Parameter>
14 </Row>
15 <Row>
16 <Parameter Name="Size">9</Parameter>
17 <Parameter Name="Color">Orange</Parameter>
18 </Row>
19 <Row>
20 <Parameter Name="Size">9</Parameter>
21 <Parameter Name="Color">Blue</Parameter>
22 </Row>
23 </Table>
24 </Data>
A natív és felügyelt kódban támogatott paramétertípusok a tábla adatforrásainak paramétertípusai között találhatók.
Ha más adattípus van megadva, a teszt figyelmeztetést küld, és sztringnek tekinti.
Visszatérve az XML-fájlokra, mindkét XML-fájlban a <ParameterTypes> blokk után egy azonos <sorkészlet> található, amely mindegyike egy adatkészletnek felel meg mind a felügyelt, mind a natív példákban. Ebben a konkrét esetben 4 adatkészlettel rendelkezik, amelyek 4 <sorblokkból> állnak, amelyek mindegyike a paramétercímkék> használatával adja meg a< paraméterek értékeit.
Ez az adatforrásfájl különböző részeinek alapvető alapjait ismerteti. Most lássuk, hogyan kérdezheti le a fenti XML-fájlban megadott értékeket.
Teszt létrehozása adatvezérelt tesztként
Most, hogy a data meg lett határozva, szüksége van egy módszerre, hogy a kódot vagy a tesztelési eljárást, amely felhasználja ezt a data, az XML-fájlban összekapcsolja. Ezt – a felügyelt és a natív példákban is – a "DataSource" metaadatainak megadásával teheti meg. A DataSource-metaadatok három részből állnak:
- "Tábla:" – ez az adatforrást XML-táblaként azonosítja.
- 'DataDrivenTests.xml' - ez az XML-táblázatot tartalmazó fájl.
- "#Table2" – A "#" delimeter után a "Table2" érték azonosítja a használni kívánt XML-dokumentum adott tábláját. Egyetlen XML-tábla adatforrása több táblát is tartalmazhat. A TAEF egy táblaelem XML-fájlját fogja áttekinteni a megadott értéknek megfelelő "Id" attribútummal.
Ismét vessünk egy gyors pillantást a fenti szempontokat lefedő kódra.
Natív kód
1 class SimpleDataDrivenExample
2 {
3 BEGIN_TEST_CLASS(SimpleDataDrivenExample)
4 TEST_CLASS_PROPERTY(L"Description", L"Simple example in table-based data-driven tests")
5 END_TEST_CLASS()
6
7 TEST_METHOD_CLEANUP(TestCleanup);
8 TEST_METHOD_SETUP(TestSetup);
9
10 BEGIN_TEST_METHOD(DataDrivenTest)
11 TEST_METHOD_PROPERTY(L"DataSource", L"Table:SimpleDataDrivenExample.xml#SimpleTable")
11 END_TEST_METHOD()
12 ...
Felügyelt kód
1 [TestMethod]
2 [DataSource("Table:CSharpDataDrivenSimpleExample.xml#SimpleTable")]
3 public void DataDrivenTest()
4 {
5 ...
6 }
A "DataSource" a Microsoft.VisualStudio.TestTools.UnitTesting ismert tulajdonsága.
A fentieken kívül további lépésekre is szükség van a felügyelt kód adatvezérelt tesztjeihez. Emellett meg kell határoznia egy privát TestContext tulajdonságot is. További információ: TestContext Osztály. A tulajdonsághoz nyilvános értékelőket is definiálhat. A TAEF belsőleg beállítja ezt a TestContext tulajdonságot, hogy rajta keresztül férhessen hozzá az adatokhoz. A kód ezen részének gyors áttekintését teszi lehetővé:
1 public TestContext TestContext
2 {
3 get;
4 set;
5 }
Adatok beolvasása a Test metódusban
A lekérési API-k eltérőek a felügyelt és a natív kódban. Kezdjük a natív lekérési API megértésével:
1 void SimpleDataDrivenExample::DataDrivenTest()
2 {
3 int size;
4 if (SUCCEEDED(TestData::TryGetValue(L"size", size)))
5 {
6 VERIFY_ARE_NOT_EQUAL(size, 0);
7 Log::Comment(String().Format(L"Size retrieved was %d", size));
8 }
9
10 String color;
11 if (SUCCEEDED(TestData::TryGetValue(L"color", color)))
12 {
13 Log::Comment(L"Size retrieved was " + color);
14 }
15
16 unsigned int index;
17 if (SUCCEEDED(TestData::TryGetValue(L"index", index)))
18 {
19 Log::Comment(String().Format(L"At index %d", index));
20 }
21 }
Ügyeljen a 4., 11. és 17. sorra. Ezen sorok előtt adjon meg egy helyi változót a lekérni kívánt adatok mentéséhez. Fontos, hogy itt helyesen adja meg a típust. Mivel a "Size" típust "int" típusként definiálta az XML-fájlban, meg kell adnia egy int típusú helyi változót, amelybe lekérheti azt. A lekérési API az első paraméterként sztringértékként kéri le a paraméter nevét. A második paraméter a referencia alapján átadott helyi változó, amelyet TAEF-kód állít be.
Ez a lekéréses API a TestData.h-ban van definiálva, és a WexTestClass.h fejléc tartalmazza, amelyet az összes TAEF-teszt tartalmaz.
A felügyelt kód adatainak lekéréséhez használja a definiált TestContext tulajdonságot. Tekintse meg az alábbi kódot (vagy például):
1 public void DataDrivenTest()
2 {
3 int size = (int)m_testContext.DataRow["Size"];
4 Verify.AreNotEqual(size, 0);
5 Log.Comment("Size is " + size.ToString());
6
7 Log.Comment("Color is " + m_testContext.DataRow["Color"]);
8 UInt32 index = (UInt32)m_testContext.DataRow["Index"];
9 Log.Comment("At index " + index.ToString());
10 }
Ha ismeri a VSTS-t, a fenti példa hasonló. Használja a DataRow-t, és adja meg az oszlop nevét a lekérni kívánt paraméter neveként.
A példában egy nem adatvezérelt teszt is szerepel ugyanabban az osztályban. Más szóval rugalmasan kombinálhatja a DataDriven- és a NonDataDriven-teszteket ugyanabban a tesztosztályban.
SimpleDataDrivenExample futtatása a TAEF használatával
Mielőtt elkezdené a tippeket és trükköket az adatvezérelt tesztek TAEF rendszerrel történő végrehajtására, győződjön meg arról, hogy tisztában van azzal, hogyan hozhat létre adatvezérelt teszteket, és hogyan hajthat végre teszteket a TAEF segítségével. Hasznos lehet frissíteni a memóriát a Kijelölés és a TAEF működéséről.
Az adatvezérelt tesztek végrehajtására szolgáló parancssor nem különbözik a TAEF-vel végzett általános tesztektől. A fent leírt mindkét példa (natív és felügyelt) futtatásához futtassa a következő parancsot:
TE.exe Példák\CPP.DataDriven.Example.dll Examples\CSharp.DataDriven.Example.dll /name:*Simple*
A "/name" nevű opció név alapján hozzáad egy kiválasztási feltételt, és csak azokat az osztályokat választja ki, amelyek érdeklik Önt. Ha ki szeretné választani, hogy mely teszteket kell végrehajtani az osztályokon belül, először listáznia kell a dll összes tulajdonságát. Ezután eldöntheti, hogy mely tulajdonságokat használja a kiválasztási feltételekhez.
TE.exe Examples\CPP.DataDriven.Example.dll Examples\CSharp.DataDriven.Example.dll /name:*Simple* /listproperties
f:\Examples\CPP.DataDriven.Example.dll
WEX::TestExecution::Examples::SimpleDataDrivenExample
Property[Description] = Simple example in table-based data-driven tests
WEX::TestExecution::Examples::SimpleDataDrivenExample::DataDrivenTest#0
Setup: TestSetup
Teardown: TestCleanup
Property[DataSource] = Table:SimpleDataDrivenExample.xml#SimpleTable
Data[Color] = White
Data[Size] = 4
WEX::TestExecution::Examples::SimpleDataDrivenExample::DataDrivenTest#1
Setup: TestSetup
Teardown: TestCleanup
Property[DataSource] = Table:SimpleDataDrivenExample.xml#SimpleTable
Data[Color] = Black
Data[Size] = 10
WEX::TestExecution::Examples::SimpleDataDrivenExample::DataDrivenTest#2
Setup: TestSetup
Teardown: TestCleanup
Property[DataSource] = Table:SimpleDataDrivenExample.xml#SimpleTable
Data[Color] = Orange
Data[Size] = 9
WEX::TestExecution::Examples::SimpleDataDrivenExample::DataDrivenTest#3
Setup: TestSetup
Teardown: TestCleanup
Property[DataSource] = Table:SimpleDataDrivenExample.xml#SimpleTable
Data[Color] = Blue
Data[Size] = 9
WEX::TestExecution::Examples::SimpleDataDrivenExample::FirstNonDataDrivenTest
Setup: TestSetup
Teardown: TestCleanup
WEX::TestExecution::Examples::SimpleDataDrivenExample::SetsOfDataTest#metadataSet0
Setup: TestSetup
Teardown: TestCleanup
Property[Data:Color] = {Purple, Maroon, Brown}
Data[Color] = Purple
WEX::TestExecution::Examples::SimpleDataDrivenExample::SetsOfDataTest#metadataSet1
Setup: TestSetup
Teardown: TestCleanup
Property[Data:Color] = {Purple, Maroon, Brown}
Data[Color] = Maroon
WEX::TestExecution::Examples::SimpleDataDrivenExample::SetsOfDataTest#metadataSet2
Setup: TestSetup
Teardown: TestCleanup
Property[Data:Color] = {Purple, Maroon, Brown}
Data[Color] = Brown
WEX::TestExecution::Examples::SimpleDataDrivenExample::SecondNonDataDrivenTest
Setup: TestSetup
Teardown: TestCleanup
f:\Examples\CSharp.DataDriven.Example.dll
WEX.Examples.CSharpDataDrivenSimpleExample
Setup: MyClassInitialize
Property[Description] = Simple example in table-based data-driven tests
WEX.Examples.CSharpDataDrivenSimpleExample.DataDrivenTest#0
Property[DataSource] = Table:CSharpDataDrivenSimpleExample.xml#SimpleTable
Data[Color] = White
Data[Size] = 4
WEX.Examples.CSharpDataDrivenSimpleExample.DataDrivenTest#1
Property[DataSource] = Table:CSharpDataDrivenSimpleExample.xml#SimpleTable
Data[Color] = Black
Data[Size] = 10
WEX.Examples.CSharpDataDrivenSimpleExample.DataDrivenTest#2
Property[DataSource] = Table:CSharpDataDrivenSimpleExample.xml#SimpleTable
Data[Color] = Orange
Data[Size] = 9
WEX.Examples.CSharpDataDrivenSimpleExample.DataDrivenTest#3
Property[DataSource] = Table:CSharpDataDrivenSimpleExample.xml#SimpleTable
Data[Color] = Blue
Data[Size] = 9
WEX.Examples.CSharpDataDrivenSimpleExample.NonDataDrivenTest
WEX.Examples.CSharpDataDrivenSimpleExample.SetsOfMetadataTest#metadataSet0
Property[Data:Color] = {Red, Green, Blue}
Data[Color] = Red
WEX.Examples.CSharpDataDrivenSimpleExample.SetsOfMetadataTest#metadataSet1
Property[Data:Color] = {Red, Green, Blue}
Data[Color] = Green
WEX.Examples.CSharpDataDrivenSimpleExample.SetsOfMetadataTest#metadataSet2
Property[Data:Color] = {Red, Green, Blue}
Data[Color] = Blue
Egyelőre hagyja figyelmen kívül a fenti SetsOfMetadataTest és SetsOfDataTest elemet. Ha kíváncsi ezekre, olvassa el a könnyű adatvezérelt tesztelésről szóló cikket. Most, hogy megismerte a különböző tulajdonságokat és adatparaméterek nevét és értékeit, ennek alapján kiválaszthatja az adott teszteket. Próbálja ki őket, és kövesse végig, hogy megerősítse a választását.
Csak a nem adatvezérelt tesztek futtatásához futtassa a következőt:
TE.exe Példák\CSharp.DataDriven.Example.dll Examples\CPP.DataDriven.Example.dll /select:"@Name='*Simple*' And not(@DataSource=*)"
Most csak az adatvezérelt tesztek futtatásához, ahol a szín "Fekete" értékként van megadva, futtassa a következőt:
TE.exe Példák\CSharp.DataDriven.Example.dll Examples\CPP.DataDriven.Example.dll /select:"@Name='*Simple*' And @Data:Color='Black'"
Ahogyan a "Color" esetében tette, a @Data:<DataDrivenParameterName>=<DataDrivenParameterValue> a megadott DataDriven paraméterérték alapján futtat bizonyos adatokat. A fenti esetben a következőt fogja futtatni: WEX::TestExecution::Examples::SimpleDataDrivenExample::DataDrivenTest#1 és WEX.Examples.CSharpDataDrivenSimpleExample.DataDrivenTest#1
Figyelje meg a fenti listproperties tesztindexeket . A fentieket az index alapján is kiválaszthatja.
TE.exe Példák\CSharp.DataDriven.Example.dll Examples\CPP.DataDriven.Example.dll /select:"@Name='*Simple*' And @Data:Index=1"
A fentiek ugyanazt a két tesztet futtatják, amelyet @Data:Color=a "Fekete" kiválasztott. Még védőket is hozzáadhat az index kiválasztásához a @Data:Index > lowerGuardValue és @Data:index< upperGuardValue használatával
Ha ismeri az adatvezérelt tesztelés alapjait a TAEF használatával, kövesse a következő osztályt is ugyanezekben a példákban: Metaadatok felülírása sorszinten, tömbparaméter-típusok megadása.