Kuinka tuoda, lukea ja muuttaa tietoja Excelistä QTP/UFT
⚡ Älykäs yhteenveto
Tietojen tuominen, lukeminen ja muuttaminen Excelistä QTP/UFT perustuu sisäänrakennettuun DataTable-objektiin, joka lataa työkirjan suorituksenaikaiseen datataulukkoon, jotta jokainen automaatioskripti voi ajaa testivaiheita laskentataulukon riveistä.
Laskentataulukot ovat edelleen yleisin paikka, jossa testaajat säilyttävät syötearvojaan, odotettuja tuloksiaan ja ympäristöasetuksiaan. QTP, nyt myydään nimellä OpenText UFT Yksi sen jälkeen, kun tuote siirtyi HP:ltä Micro Focukselle ja sitten OpenText, lukee kyseiset laskentataulukot DataTable-objektin kautta. Alla olevissa osioissa näytetään tarkat lausekkeet, joita käytetään työkirjan tuomiseen, sen rivien laskemiseen, yksittäisten solujen lukemiseen, arvojen muuttamiseen ja taulukon kirjoittamiseen takaisin levylle.
Vaiheet tietojen tuomiseen, lukemiseen ja muuttamiseen EXCEListä
Oletetaan, että haluat tuoda seuraavat Myynti.xls työkirja kokeeseesi.
Kun tiedosto on tuotu sisään UFT, ylimmästä rivistä tulee sarakeotsikko, joten jäsentele tietosi vastaavasti. Rivillä 1 olevia tietoja käsitellään parametrin niminä eikä testitietoina, ja jokainen jäljellä oleva rivi lasketaan datariviksi.
Koko Excel-tiedoston tuonnin syntaksi on esitetty alla.
DataTable.Import(FileName)
Meidän tapauksessamme lauseke on seuraavanlainen. VBScript ei tarvitse sulkeita, kun metodia kutsutaan lausekkeena, joten tässä käytetään selkokielistä muotoa.
DataTable.Import "D:\Automation\Sales.xls"
Suorituksen jälkeen tuodut rivit näkyvät suorituksenaikaisessa Data-ruudussa täsmälleen sellaisena kuin ne on aseteltu työkirjaan.
Seuraavaksi näytetään syntaksi yhden tietyn taulukon tuomiseksi. SheetSource on työkirjan sisällä oleva taulukko ja SheetDest on kohdetaulukko suorituksenaikaisessa datataulukossa.
DataTable.ImportSheet FileName, SheetSource, SheetDest
Käytä HaeRivimäärä menetelmä taulukon tietorivien määrän selvittämiseksi. Jokaisen lausekkeen on oltava omalla rivillään.
DataTable.Import "D:\Automation\Sales.xls" row = DataTable.GetSheet(1).GetRowCount MsgBox row
Näyttöön tuleva viestiruutu ilmoittaa tuodun taulukon rivien yhteissumman.
Siirtääksesi osoittimen tietylle riville, käytä Aseta nykyinen rivi menetelmä. Toinen argumentti DataTable.Value on arkin numero, ei rivinumero, minkä vuoksi riviosoitinta on siirrettävä erikseen.
DataTable.Import "D:\Automation\Sales.xls" ' In the code below, 1 is the sheet number DataTable.SetCurrentRow 1 Row1 = DataTable.Value("Year", 1) DataTable.SetCurrentRow 2 Row2 = DataTable.Value("Year", 1) MsgBox "Year Row 1 = " & Row1 & " Year Row 2 = " & Row2
Molemmat arvot luetaan samasta sarakkeesta, mutta kahdelta eri riviltä, ja viestiruutu tulostaa ne vierekkäin.
Käytä Arvo metodia tehtävänannon vasemmalla puolella muuttaaksesi tuodun taulukon tietoja. Muutos säilyy muistissa, kunnes kutsut metodia Vie, joka kirjoittaa ajonaikaisen datataulukon takaisin Excel-tiedostoon.
DataTable.SetCurrentRow 1 DataTable.Value("Year", 1) = 2026 DataTable.Export "D:\Automation\Sales_Updated.xls"
Muokattu solu näkyy suorituksenaikaisessa Data-ruudussa heti tehtävän suorittamisen jälkeen.
Viedyn työkirjan avaaminen vahvistaa, että muokatut arvot tallennettiin levylle sen sijaan, että niitä säilytettäisiin vain suorituksen ajan.
💡 Vinkki: Vie tiedosto eri tiedostonimeen kuin tuomasi tiedosto. Palaaminen samaan avoimeen työkirjaan on nopein tapa laukaista jakamisvirhe ja menettää suoritus.
Excel-tietojen lukeminen, muuttaminen ja vieminen: Täydellinen esimerkki
Yllä olevat koodinpätkät esittelevät kukin yhden metodin. Todellisessa datapohjaisessa testissä ne yhdistetään yhdeksi silmukaksi, joka käy läpi jokaisen rivin, laskee jotakin, tallentaa tuloksen ja vie taulukon. Oletetaan, että työkirja Myynti.xls sisältää seuraavat neljä saraketta ja kolme datariviä.
| Vuosi | Alue | Yksiköt | Hinta |
|---|---|---|---|
| 2023 | Itään | 120 | 25 |
| 2024 | Itään | 150 | 25 |
| 2025 | Länsi | 200 | 30 |
Alla oleva skripti lisää RevEnue sarakkeen, täyttää sen rivi riviltä, pitää juoksevaa summaa ja kirjoittaa valmiin taulukon uuteen tiedostoon. AddParameter käytetään, koska saraketta ei ole lähdetyökirjassa; sen kutsuminen jo olemassa olevalle sarakkeelle aiheuttaa virheen.
' Read, calculate and export Excel data in UFT One Dim sh, rowCount, i, units, price, revenue, total DataTable.Import "D:\Automation\Sales.xls" Set sh = DataTable.GetSheet(1) sh.AddParameter "Revenue", "" rowCount = sh.GetRowCount Print "Total rows imported: " & rowCount total = 0 For i = 1 To rowCount DataTable.SetCurrentRow i units = DataTable.Value("Units", 1) price = DataTable.Value("Price", 1) revenue = CInt(units) * CInt(price) DataTable.Value("Revenue", 1) = revenue total = total + revenue Print "Row " & i & " | Year: " & DataTable.Value("Year", 1) & _ " | Region: " & DataTable.Value("Region", 1) & _ " | Revenue: " & revenue Next Print "Grand Total Revenue: " & total DataTable.Export "D:\Automation\Sales_Revenue.xls" Set sh = Nothing
lähtö:
Total rows imported: 3 Row 1 | Year: 2023 | Region: East | Revenue: 3000 Row 2 | Year: 2024 | Region: East | Revenue: 3750 Row 3 | Year: 2025 | Region: West | Revenue: 6000 Grand Total Revenue: 12750
Kolme kohtaa tässä käsikirjoituksessa ovat tärkeämpiä kuin muut. Ensinnäkin, GetRowCount palauttaa arvon 3 eikä 4, koska otsikkorivi käytetään sarakeniminä. Toiseksi, SetCurrentRow kutsutaan jokaisen iteraation alussa; ilman sitä kaikki kolme iteraatiota lukisivat saman rivin. Kolmanneksi, datataulukosta tulevat arvot ovat merkkijonoja, joten CInt käytetään ennen kertolaskua merkkijonojen ketjuttamisen välttämiseksi aritmeettisen sijaan.ping DataTable.Export jättäisi lasketun tuoton näkyviin Data-ruudussa, mutta puuttuisi levyllä olevista tiedostoista.
DataTable-objekti vs. Excel COM -objekti UFT
DataTable-objekti ei ole ainoa tapa päästä laskentataulukkoon. UFT skriptit voivat myös luoda Excel.Application COM-objekti ja ajaa Exceliä suoraan. Nämä kaksi lähestymistapaa ratkaisevat erilaisia ongelmia.
| Aspect | DataTable-objekti | Excelin COM-objekti |
|---|---|---|
| Excelin asennus | Ei vaadita suorituskoneella | Microsoft Excelin on oltava asennettuna |
| Osoitustyyli | Sarakkeen nimen ja rivin osoittimen mukaan | Solukoordinaattien, alueiden tai nimettyjen alueiden mukaan |
| Toistot | Rivit ohjaavat testi-iteraatioita automaattisesti | Ei linkkiä iteraatioihin; katsoping on manuaalinen |
| Muotoilu ja kaavat | Ohitetaan; vain arvot luetaan | Täysi pääsy kaavoihin, väreihin ja kaavioihin |
| Useita työkirjoja | Yksi suoritusaikainen taulukko, taulukot tuodaan yksi kerrallaan | Mikä tahansa määrä työkirjoja avoinna samanaikaisesti |
| Tulosten raportointi | Arvot näkyvät kohdassa UFT suorita tulokset automaattisesti | Mitään ei tallenneta, ellet itse ilmoita siitä |
| Siivoustaakka | Hoitaa UFT | Sinun on suljettava, lopetettava ja vapautettava jokainen objekti |
Käytännön sääntö on yksinkertainen. Käytä DataTable-objektia suoraviivaiseen parametrisointiin, jossa jokainen laskentataulukon rivi on yksi iteraatio. automaatiotestaus suorita. Vaihda COM-objektiin vain, kun tarvitset jotain, mitä datataulukko ei voi ilmaista, kuten kaavan tuloksen lukemista, muotoillun raportin kirjoittamista tai kahden työkirjan vertaamista samassa komentosarjassa. Alla oleva esimerkki lukee yhden solun, kirjoittaa tilan takaisin ja sulkee Excelin oikein.
Dim xlApp, xlBook, xlSheet, cellValue Set xlApp = CreateObject("Excel.Application") xlApp.Visible = False xlApp.DisplayAlerts = False Set xlBook = xlApp.Workbooks.Open("D:\Automation\Sales.xls") Set xlSheet = xlBook.Worksheets("Sheet1") cellValue = xlSheet.Cells(2, 1).Value Print "Cell A2 contains: " & cellValue xlSheet.Cells(2, 5).Value = "Reviewed" xlBook.Save ' Release everything, in this order xlBook.Close False xlApp.Quit Set xlSheet = Nothing Set xlBook = Nothing Set xlApp = Nothing
lähtö:
Cell A2 contains: 2023
Solussa A2 on luku 2023, koska laskentataulukon rivi 1 on otsikkorivi ja sarake A on VuosiHuomaa, että COM-osoitus on yhteen perustuva ja laskee otsikon, kun taas DataTable.SetCurrentRow 1 pisteet ensimmäisellä datarivillä.
Yleisiä virheitä Exceliä käytettäessä UFT ja kuinka korjata ne
Useimmat Excel-ongelmat UFT johtuvat pienestä joukosta toistuvia virheitä. Niiden tunnistaminen säästää paljon virheenkorjausaikaa.
⚠️ Varoitus: Orpo EXCEL.EXE-prosessi on COM-automaation yleisin yksittäinen sivuvaikutus. Jokainen CreateObject("Excel.Application") joka ei vastaa Quit plus Set … = Nothing jättää piilotetun Excel-instanssin toimimaan. Muutaman sadan testiajon jälkeen suorituskoneen muisti on täynnä ja lähdetyökirja lukitaan muokkaukselta.
- Excel pysyy muistissa. Sulje työkirja, soita
xlApp.Quitja vapauta sitten taulukko-, työkirja- ja sovellusobjektit tässä järjestyksessä. Sovelluksen vapauttaminen ensin jättää aktiivisen viittauksen ja pitää prosessin toiminnassa. - Muutokset katoavat juoksun jälkeen.
DataTable.Valuekirjoittaa vain ajonaikaiseen datataulukkoon. IlmanDataTable.Export, tiedostojärjestelmään ei pääse mitään. - ”Saraketta ei ole olemassa” tai virheellinen parametrivirhe. Sarakkeen nimi välitettiin käyttäjälle
DataTable.Valuetäytyy vastata otsikkosolua täsmälleen, mukaan lukien välilyönnit. KäytäAddParameterluoda sarake ennen siihen kirjoittamista. - Jokainen iteraatio lukee samat arvot.
SetCurrentRowei kutsuttu silmukan sisällä, joten riviosoitin ei koskaan liikkunut. - Yhden rivin poikkeama lasketaan.
GetRowCountjättää otsikkorivin pois. Työkirja, jossa on otsikko ja kymmenen tietuetta, palauttaa arvon 10, ei 11. - Polku- ja käyttöoikeusvirheet. Kovakoodatut polut, kuten
D:\Automation\Sales.xlskatkos muilla koneilla. Luo polku ympäristömuuttujasta, jotta sama komentosarja suoritetaan jokaisella agentilla. - Yhdistetyt solut ja useita otsikkorivejä. Tuonti odottaa täsmälleen yhtä otsikkoriviä, jossa on yksilöllisiä nimiä. Yhdistetyt solut tuottavat tyhjiä tai kaksoiskappaleisia parametrien nimiä.
- Jakamisrikkomus viennissä. Kohdetiedostoa ei voi avata Excelissä, kun
Exportsuoritetaan. Sulje se ensin tai vie aikaleimatulla tiedostonimellä varustettuun tiedostoon.
Hyödyllinen tapa on kääriä COM-siivous On Error Resume Next lohko sijoitetaan erilliseen palautustoimintoon, joten kesken skriptin tapahtuva virhe sulkee Excelin silti. Kun Excelin tiedot syöttävät muodollisen testitapaus tietovarastossa sama käytäntö koskee tuloksia: vie tiedosto kerran, varmista, että tiedosto on olemassa, ja liitä se sitten ajoon.
Päästäksesi pidemmälle tässä käsitellyissä aiheissa, käy läpi koko QTP/UFT oppitunti laajemmassa viitekehyksessä opi viemään tuloksia eteenpäin ALM-palvelu UFT, tarkastele perusteita kohdassa ohjelmistojen testausja vertaa lähestymistapaa datapohjaiseen komentosarjojen kirjoittamiseen Selenium.







