how run cucumber with jenkins
Tento výukový program poskytuje kompletný prehľad o uhorke s hárkom Jenkins a Excel na vysvetlenie integrácie uhorky Jenkins. :
V tomto výučbe budeme diskutovať o uhorke s hárkami Jenkins a Excel. Dúfame, že vám tento návod pomôže.
Čo sa dozviete:
- Uhorka s Jenkinsom
- Jenkinsova konfigurácia
- Správa o uhorke Jenkinsovej
- Uhorka Excel
- Pozorovanie
- Záver
- Odporúčané čítanie
Uhorka s Jenkinsom
Testovanie automatizácie skriptov
Je potrebné vykonať nasledujúcu konfiguráciu.
Súbor funkcií
Funkcia:
Ako užívateľ
Chcem mať možnosť pridávať do systému nových klientov.
Aby som mohol doplniť účtovné údaje o danom klientovi.
Pozadie:
Vzhľadom na to, že som na domovskej stránke Githubu.
Keď zadám používateľské meno ako „xxxxxxxxxx“ a heslo ako „xxxxxxxxx“.
A kliknite na tlačidlo Prihlásiť sa.
@ Dym
Scenár: Úprava profilu.
Vzhľadom na to, že klikám na možnosť Váš profil.
Keď kliknem na tlačidlo Upraviť profil.
A nahral nový obrázok.
Potom by som mal vidieť nový profilový obrázok.
@ Regresia @ Zakaždým
Scenár: Vytvoriť novú podstatu.
Vzhľadom na to, že klikám na možnosť Vaše zoznamy.
Keď uvediem názov súboru, popis.
A kliknite na Vytvoriť metódu verejného súhrnu.
Potom by som mal vidieť novú podstatu.
Súbor Stepdef
aký je kľúč zabezpečenia siete pre bezdrôtové pripojenie?
package com.Multi; import cucumber.api.PendingException; import cucumber.api.java.en.Given; import cucumber.api.java.en.Then; import cucumber.api.java.en.When; import cucumber.api.java.After; import cucumber.api.java.Before; import cucumber.api.java.en.But; import java.util.List; import cucumber.api.PendingException; import cucumber.api.java.it.Data; import cucumber.runtime.ScenarioImpl; import gherkin.formatter.model.Scenario; import gherkin.formatter.model.ScenarioOutline; import cucumber.api.DataTable; import org.junit.Assert; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.firefox.FirefoxDriver; import org.openqa.selenium.interactions.Actions; import cucumber.api.cli.Main; public class Step2 { static public String sb; static public String sa; static WebDriver driver = null; @Before('@Smoke,@Regression') public void beforeScenario(){ System.out.println('New scenrio begins'); } @After('@Smoke,@Regression') public void afterScenario(){ System.out.println('Scenrio ends'); } @MyAnnotation public static void myanno() { System.out.println('my annot gets executed'); } @Given('^I am on Github home page$') public void i_am_on_Github_home_page(){ String site = 'https://www.github.com/login'; System.setProperty('webdriver.chrome.driver', 'Executables\chromedriver.exe'); driver = new ChromeDriver(); driver.navigate().to(site); //driver.findElement(By.cssSelector('a(contains(@href, 'login'))').click(); // Write code here that turns the phrase above into concrete actions } @When('^I specify Username as '((^')*)' and Password as '((^')*)'$') public void i_specify_Username_as_and_Password_as(String arg1, String arg2){ driver.findElement(By.cssSelector('input#login_field')).sendKeys(arg1); driver.findElement(By.cssSelector('input#password')).sendKeys(arg2); // Write code here that turns the phrase above into concrete actions } @When('^Click on SignIn button$') public void click_on_SignIn_button(){ driver.findElement(By.cssSelector('input.btn')).click(); // Write code here that turns the phrase above into concrete actions } @Given('^I click on Your Profile option$') public void i_click_on_Your_Profile_option(){ driver.findElement(By.xpath('//*(@id='user- links')/li(3)/details/summary/img')).click(); List olist = driver.findElements(By.xpath('//*(@id='user- links')/li(3)/details/ul/li/a(@class='dropdown-item')')); for(WebElement o:olist) { if(o.getText().equals('Your profile')) { o.click(); break; } } // Write code here that turns the phrase above into concrete actions } @When('^I click on edit profile button$') public void i_click_on_edit_profile_button(){ driver.findElement(By.xpath('//*(@id='js-pjax- container')/div/div(2)/div(1)/a')).click(); // Write code here that turns the phrase above into concrete actions } @When('^Uploaded new picture$') public void uploaded_new_picture() throws InterruptedException{ WebElement s1 = driver.findElement(By.xpath('//*(@class='avatar-upload- container clearfix')/Img')); sb=s1.getAttribute('src'); System.out.println(s1.getAttribute('src')); driver.findElement(By.id('upload-profile- picture')).sendKeys('D://cucumberFinal//multiple//Files//images.jpg'); Thread.sleep(10000); String wh = driver.getWindowHandle(); driver.switchTo().window(wh); Actions actions = new Actions(driver); WebElement element = driver.findElement(By.xpath('//div(@class='facebox -content')/form/div(3)/button')); Thread.sleep(10000); actions.moveToElement(element); //Thread.sleep(10000); actions.click(); //actions.sendKeys('GIST1 Description'); actions.build().perform(); // driver.findElement(By.xpath('//div(@class='facebox- content')/form/div(3)/button')).click(); Thread.sleep(3000); // Write code here that turns the phrase above into concrete actions } @Then('^I should be seeing new profile picture$') public void i_should_be_seeing_new_profile_picture(){ WebElement s1 = driver.findElement(By.xpath('//*(@class='avatar-upload- container clearfix')/Img')); sb=s1.getAttribute('src'); System.out.println(s1.getAttribute('src')); if(!(sb.equals(sa))) { Assert.assertTrue('File Upload successful', true); } // Write code here that turns the phrase above into concrete actions } @Given('^I click on Your Gists option$') public void i_click_on_Your_Gists_option(){ driver.findElement(By.xpath('//*(@id='user- links')/li(3)/details/summary/img')).click(); List olist = driver.findElements(By.xpath('//*(@id='user- links')/li(3)/details/ul/li/a(@class='dropdown-item')')); for(WebElement o:olist) { if(o.getText().equals('Your Gists')) { o.click(); break; } } // Write code here that turns the phrase above into concrete actions } @When('^I provide filename, description$') public void i_provide_filename_description() throws InterruptedException { // Write code here that turns the phrase above into concrete actions driver.findElement(By.xpath('//div(@class='edit container')/div(@id='gists')/input')).sendKeys('Gist1'); Thread.sleep(2000); Actions actions = new Actions(driver); WebElement element = driver.findElement(By.xpath('//*(@id='gists')/div(2)/div/div(2)/div/div(5)/div(1) /div/div/div/div(5)/div/pre/span')); actions.moveToElement(element); actions.click(); actions.sendKeys('GIST1 Description'); actions.build().perform(); // driver.findElement(By.xpath('//*(@id='gists')/div(2)/div/div(2)/div/div(5)/div(1) /div/div/div/div(5)/div/pre/span')).sendKeys('GIST1 Description'); Thread.sleep(2000); } @When('^click on Create public gist method$') public void click_on_Create_public_gist_method() { driver.findElement(By.xpath('//*(@id='new_gist')/div(2)/div(2)/button(1)')).click(); // Write code here that turns the phrase above into concrete actions } @Then('^i should be seeing the new gist$') public void i_should_be_seeing_the_new_gist(){ List glist = driver.findElements(By.xpath('//div(@class='container repohead-details -container')/ul(1)/li(@class='flex-auto')/div/a')); for(WebElement o:glist) { if(o.getText().equals('Gist1')) { System.out.println('Gist created successfully'); } } // Write code here that turns the phrase above into concrete actions } }
Súbor TestNG
Runner File
package runner; import org.junit.runner.RunWith; import cucumber.api.CucumberOptions; import cucumber.api.junit.Cucumber; import cucumber.api.testng.AbstractTestNGCucumberTests; import cucumber.api.SnippetType; @RunWith(Cucumber.class) @CucumberOptions( features='Features', glue='com.Multi', plugin={'html:target/cucumber-html-report', 'json:target/cucumber.json', 'pretty:target/cucumber-pretty.txt','usage:target/cucumber-usage.json', 'junit:target/cucumber-results.xml'}, dryRun = false, strict = true, tags={'@Smoke,@Regression'}, monochrome = true, snippets=SnippetType.CAMELCASE ) public class Runner extends AbstractTestNGCucumberTests{ }
Jenkinsova konfigurácia
Prístup Jenkinsova adresa URL .
Ísť do Spravovať Jenkins> Spravovať doplnok .
Nainštalujte nasledujúce doplnky:
- Doplnok Výsledky testu uhorky
- Správy o uhorkách
- Plugin uhoriek
Uistite sa, že počas inštalácie sú všetky závislé doplnky úspešne nainštalované, inak by doplnky pre hlásenie nemuseli fungovať.
Teraz prejdite na Spravovať -> Globálna konfigurácia nástroja.
Nastaviť cesta pre JDK.
Nastaviť cesta pre Maven.
Vytvor Nová vec ako Maven Project.
čo je dobrý bezplatný sťahovač hudby
Po vytvorení úlohy kliknite na odkaz na konfiguráciu na ľavom paneli.
Posunúť nadol strana.
Celú cestu súboru pom.xml, cieľ nastavte ako ‘test’ a uložiť konfigurácia.
Po dokončení vyššie uvedených krokov kliknite na ikonu Stavať teraz odkaz, ktorý sa nachádza na ľavom paneli projektu Maven.
Vytvorí sa zostavenie a príslušné súbor testing.xml (ktorý je uvedený nad pom.xml) bude vykonaný.
Tu je výstup, ktorý sa zobrazuje v konzole.
Výstup konzoly
(INFO) T E S T S
(INFO) -------------------
(INFO) Beží TestSuite
Začína sa nový scenár
Spúšťa sa ChromeDriver 2.33.506120 (e3e53437346286c0bc2d2dc9aa4915ba81d9023f) na porte 27348
Povolené sú iba miestne spojenia.
log4j: UPOZORNENIE Pre záznamník nebolo možné nájsť žiadne dodatky
(org.apache.http.client.protocol.RequestAddCookies).
log4j: UPOZORNENIE Inicializujte systém log4j správne.
log4j: POZOR Ďalšie informácie nájdete na stránke http://logging.apache.org/log4j/1.2/faq.html#noconfig.
25. novembra 2017 12:56:41 org.openqa.selenium.remote.ProtocolHandshake createSession
INFO: Zistený dialekt: OSS
https://avatars3.githubusercontent.com/u/31874017?s=400&u=c41bfae0fa6b9325fb4f209885b51bd02c7d897d&v=4
https://avatars3.githubusercontent.com/u/31874017?s=400&u=c41bfae0fa6b9325fb4f209885b51bd02c7d897d&v=4
Scenár sa končí
Začína sa nový scenár
Spúšťa sa ChromeDriver 2.33.506120 (e3e53437346286c0bc2d2dc9aa4915ba81d9023f) na porte 24866
Povolené sú iba miestne spojenia.
25. novembra 2017 12:57:45 org.openqa.selenium.remote.ProtocolHandshake createSession
INFO: Zistený dialekt: OSS
Scenár sa končí
2 scenáre (2 vyhoveli)
14 krokov (prešlo 14)
2m2,677s
ktorý je najlepší youtube downloader?
(INFO) Spustené testy: 1, Zlyhania: 0, Chyby: 0, Vynechané: 0, Uplynutý čas: 128,513 s - v TestSuite
(INFO)
(INFO) Výsledky:
(INFO)
(INFO) Priebeh testov: 1, zlyhania: 0, chyby: 0, preskočenie: 0
(INFO)
(JENKINS) Zaznamenávajú sa výsledky testu
(INFO) ------------------------
(INFO) STAVEBNÝ ÚSPECH
(INFO) ------------------------
(INFO) Celkový čas: 02:51 min
(INFO) Hotové o: 2017-11-25T12: 58: 45 + 05: 30
(INFO) Konečná pamäť: 12M / 28M
(INFO) ------------------------
Čaká sa na dokončenie zhromažďovania údajov Jenkinsom
(JENKINS) Archivácia D: cucumberFinal multiple pom.xml do com / cucumber.example / 0.0.1-SNAPSHOT / cucumber.example-0.0.1-SNAPSHOT.pom
kanál zastavený
Dokončené: ÚSPECH
Správa o uhorke Jenkinsovej
Uhorka Excel
Testovanie automatizácie skriptov
Je potrebné vykonať nasledujúcu konfiguráciu.
Stratégia návrhu testu:
- Vytvorte utilitu na čítanie v programe Excel, ktorá má schopnosť brať ako vstupný parameter „názov stĺpca“ v excelovom hárku a na oplátku dá tomuto „columnanme“ „columnvalue“ v excelovom hárku.
- Vytvorte súbor funkcií, ktorý má názov stĺpca listu Excel uvedený v úvodzovkách v ktoromkoľvek z krokov.
- Teraz vytvorte zodpovedajúci súbor Stepdef pre súbor funkcií a použite parametre (arg1, arg2 atď., Ktoré boli vygenerované, ak sme zadali slovo v dvojitej úvodzovke nad súborom funkcií) ako vstup do čítačky programu Excel (vytvorené v kroku 1).
- Teraz máme hodnotu stĺpca tabuľky Excel, ktorú je možné použiť ako vstup do súboru Stepdef.
- Vykonajte súbor funkcií tak, ako bol vytvorený v predchádzajúcom kroku.
Súbor funkcií
Funkcia: Názov vašej funkcie
Chcem použiť túto šablónu pre svoj súbor funkcií
Pozadie:
Vzhľadom na to, že som v Gmaile a mám prístup na obrazovku „obrazovka“.
Vzhľadom na to zadávam používateľské meno ako „používateľské meno“ a heslo ako „heslo“.
Zadané Kliknite na tlačidlo Prihlásiť sa.
Scenár: Vytvorte novú správu z dátovej tabuľky
Keď pristupujem k vyskakovaciemu oknu, vyskakovacie okno.
A určím ako „Príjemca“ a predmet ako „Predmet“ a kliknem na tlačidlo odoslať.
Potom by som mal vidieť správu o úspechu.
Súbor programu Excel
package com.cuexcel; import java.io.FileInputStream; import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import com.google.common.collect.Maps; import gherkin.formatter.model.Row; public class Excel { private static String sheet = 'Sheet1'; private static String worksheet = 'D:\cucumberFinal\cuexcel\Files\tdata.xls'; static HashMap excelinfo = new HashMap(); public static String get(String ColName) throws IOException { FileInputStream fis; int k =0; String ColValue=null; fis = new FileInputStream(worksheet); HSSFWorkbook wb = new HSSFWorkbook(fis); HSSFSheet ws = wb.getSheet(sheet); int rows = ws.getPhysicalNumberOfRows(); HSSFRow HeaderRow = ws.getRow(0); for(Integer i=1;i Súbor Stepdef
package com.cuexcel; import java.io.IOException; import java.util.ArrayList; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.interactions.Actions; import cucumber.api.Scenario; import cucumber.api.java.Before; import cucumber.api.java.en.Given; import cucumber.api.java.en.Then; import cucumber.api.java.en.When; import cucumber.api.Scenario; import com.cuexcel.Excel; public class CExcel { static public WebDriver driver; Excel e; @Before public static void callexcel() throws IOException, InterruptedException { System.setProperty('webdriver.chrome.driver', 'Executables/chromedriver.exe'); driver= new ChromeDriver(); driver.manage().window().maximize(); driver.navigate().to('https://www.google.com/gmail/about'); } @Given('^I am on Gmail and accessing screen '((^')*)'$') public void i_am_on_Gmail_and_accessing_screen(String arg1) throws Throwable { // Write code here that turns the phrase above into concrete actions driver.findElement(By.xpath('//nav/div/a(2)')).click(); //arg1=Excel.get().get(0).toString(); System.out.println(e.get(arg1) + ' - is clicked'); Thread.sleep(3000); } @Given('^I specify Username as '((^')*)' and Password as '((^')*)'$') public void i_specify_Username_as_and_Password_as(String arg1, String arg2) throws Throwable { //arg1=Excel.get().get(1).toString(); //arg2=Excel.get().get(2).toString(); driver.findElement(By.xpath('//input(@type='email')')).sendKeys(e.get(arg1). toString()); driver.findElement(By.xpath('//*(@id='identifierNext')/content/span')).click(); Thread.sleep(3000); driver.findElement(By.xpath('//input(@type='password')')). sendKeys (e.get(arg2). toString()); } @When('^Click on SignIn button$') public void click_on_SignIn_button() throws InterruptedException{ driver.findElement(By.xpath('//*(@id='passwordNext')/content/span')).click(); Thread.sleep(5000); } @When('^I am accessing the popup '((^')*)'$') public void i_am_accessing_the_popup(String arg1) throws Throwable { // Write code here that turns the phrase above into concrete actions //arg1=Excel.get().get(3).toString(); driver.findElement(By.xpath('//*(@id=':x4')/div/div')).click(); System.out.println(e.get(arg1) + '- being clicked'); } @When('^I specify to as '((^')*)' and subject as '((^')*)' details and click on submit button$') public void i_specify_to_as_and_subject_as_details_and_click_on_submit_button(String arg1, String arg2) throws Throwable { // Write code here that turns the phrase above into concrete actions String whandle = driver.getWindowHandle(); driver.switchTo().window(whandle); //arg1=Excel.get().get(4).toString(); //arg2=Excel.get().get(5).toString(); driver.findElement(By.xpath('//td(@class='eV')/div(1)/div/textarea')).sendKeys (e.get(arg1)); driver.findElement(By.xpath('//table(@class='aoP aoC bvf')/tbody/tr/td/form/div(3)/input')).sendKeys(e.get(arg2)); driver.findElement(By.xpath('//table(@class='IZ')/tbody/tr/td/div')).click(); Thread.sleep(3000); } @Then('^i should be seeing the success message$') public void i_should_be_seeing_the_success_message() throws Throwable { // Write code here that turns the phrase above into concrete actions WebElement sent = driver.findElement(By.xpath('//*(@id='link_vsm')')); if(sent.isDisplayed()) { System.out.println('Message sent successfully'); } } }
Súbor POM
4.0.0 com cuexcel 0.0.1-SNAPSHOT jar cuexcel http://maven.apache.org UTF-8 org.seleniumhq.selenium selenium-java 3.6.0 org.seleniumhq.selenium selenium-chrome-driver 3.6.0 info.cukes cucumber-core 1.2.5 info.cukes cucumber-java 1.2.5 test info.cukes cucumber-junit 1.2.5 test junit junit 4.11 test info.cukes cucumber-testng 1.2.0 info.cukes gherkin 2.12.2 provided log4j log4j 1.2.17 org.apache.poi poi-ooxml 3.9 org.apache.poi poi 3.11-beta3 xml-apis xml-apis 2.0.2 xerces xercesImpl 2.8.0 info.cukes cucumber-jvm-deps 1.0.5 provided net.masterthought cucumber-reporting 3.11.0 org.apache.maven.plugins maven-surefire-plugin 2.18 org.apache.maven.surefire surefire-junit47 2.18
Po dokončení vyššie uvedenej konfigurácie stačí vykonať súbor funkcií.
Pozorovanie
Súbor Stepdef vezme údaje z hárka programu Excel a vykoná testovacie kroky uvedené v súbore funkcií.
Tu je výsledok vykonania testovacieho prípadu, ako je uvedený v konzole Eclipse.

Záver
BDD je budúcnosť automatizácie testov, pretože umožňuje všetkým zúčastneným stranám podieľať sa na tvorbe testovacieho skriptu, najmä poskytovať svoje vstupy cez súbor funkcií.
Cucumber je široko používaný nástroj BDD a má veľa integrácií a funkcií, ktoré ešte nie sú implementované do automatizácie testov. Na Uhorke aktívne pracuje niekoľko skupín / spoločenstiev.
Ak ovládate uhorku, môžete pracovať na akomkoľvek nástroji BDD dostupnom na trhu, pretože väčšina nástrojov funguje podobne ako uhorka.
Dúfame, že ste sa o Cucumber s Jenkinsom dozvedeli prostredníctvom tohto podrobného tutoriálu.
Odporúčané čítanie
- Výukový program pre Python DateTime s príkladmi
- Výukový program Cucumber Selenium: Cucumber Java Selenium WebDriver Integration
- Výukový program pre skriptovanie Unixu s príkladmi
- Sprievodca hľadaním prvkov selénom podľa výučby s príkladmi
- Java „toto“ kľúčové slovo: Výukový program s príkladmi kódu
- Výukový program BDD a uhorky s príkladmi
- Výukový program na spracovanie výnimiek C # s príkladmi kódu
- Automatizačné testovanie pomocou nástroja Cucumber Tool a selénu - selén - návod č. 30