how run cucumber with jenkins
Tento kurz poskytuje úplný přehled okurky s listem Jenkins a Excel k vysvětlení integrace Cucumber Jenkins :
V tomto tutoriálu budeme diskutovat Okurka s listem Jenkins a Excel. Doufáme, že vám tento návod pomůže.
Co se naučíte:
- Okurka s Jenkinsem
- Jenkinsova konfigurace
- Zpráva Okurky Jenkinsové
- Okurka Excel
- Pozorování
- Závěr
- Doporučené čtení
Okurka s Jenkinsem
Otestujte automatizaci skriptů
Je třeba provést následující konfiguraci.
Soubor funkcí
Vlastnosti:
Jako uživatel
Chci mít možnost přidávat do systému nové klienty.
Abych mohl pro tohoto klienta přidat účetní údaje.
Pozadí:
Vzhledem k tomu, že jsem na domovské stránce Github.
Když zadám uživatelské jméno jako „xxxxxxxxxx“ a heslo jako „xxxxxxxxx“.
A klikněte na tlačítko Přihlásit se.
@Kouř
Scénář: Úpravy profilu.
Vzhledem k tomu, že kliknu na možnost Váš profil.
Když kliknu na tlačítko Upravit profil.
A nahrál nový obrázek.
Pak bych měl vidět nový profilový obrázek.
@ Regrese @Everytime
Scénář: Vytvořit novou podstatu.
Vzhledem k tomu, že kliknu na možnost Vaše seznamy.
Když uvedu název souboru, popis.
A klikněte na Vytvořit metodu veřejného přehledu.
Pak bych měl vidět novou podstatu.
Soubor Stepdef
jaký je nejlepší e-mail k použití
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 } }
Soubor TestNG
Soubor běžec
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 konfigurace
Přístup Jenkinsova URL .
Jít do Spravovat Jenkins> Spravovat plugin .
Nainstalujte následující doplňky:
- Plugin Výsledky testu okurky
- Okurkové zprávy
- Plugin okurek
co může otevřít soubor eps
Ujistěte se, že během instalace jsou všechny závislé doplňky úspěšně nainstalovány, jinak nemusí doplňky pro hlášení fungovat.
Nyní přejděte na Spravovat -> Globální konfigurace nástroje.
Nastav cesta pro JDK.
Nastav cesta pro Maven.
Vytvořit nový předmět jako projekt Maven.
Jakmile je úloha vytvořena, klikněte na odkaz pro konfiguraci na levém panelu.
Posunout dolů strana.
Nastavte úplnou cestu pom.xml, cíl jako ‚test 'a Uložit konfigurace.
Po dokončení výše uvedených kroků klikněte na ikonu Stavět hned odkaz, který je přítomen v levém panelu projektu Maven.
Sestavení bude provedeno a odpovídající soubor testování.xml (který je zmíněn nad pom.xml) bude proveden.
Zde je výstup, který se zobrazuje na konzole.
Výstup konzoly
(INFO) T E S T S
(INFO) ———————————————————-
(INFO) Probíhá TestSuite
Začíná nový scénář
Spouštění ChromeDriver 2.33.506120 (e3e53437346286c0bc2d2dc9aa4915ba81d9023f) na portu 27348
Povolena jsou pouze místní připojení.
log4j: UPOZORNĚNÍ Nebyly nalezeny žádné přílohy pro záznamník
(org.apache.http.client.protocol.RequestAddCookies).
log4j: UPOZORNĚNÍ Inicializujte prosím správně systém log4j.
log4j: VAROVÁNÍ Další informace naleznete na stránce http://logging.apache.org/log4j/1.2/faq.html#noconfig.
25. listopadu 2017 12:56:41 org.openqa.selenium.remote.ProtocolHandshake createSession
INFO: Detekovaný 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
Scénář končí
Začíná nový scénář
Spouštění ChromeDriver 2.33.506120 (e3e53437346286c0bc2d2dc9aa4915ba81d9023f) na portu 24866
Povolena jsou pouze místní připojení.
25. listopadu 2017 12:57:45 org.openqa.selenium.remote.ProtocolHandshake createSession
INFO: Detekovaný dialekt: OSS
Scénář končí
2 scénáře (2 vyhověly)
14 kroků (14 úspěšných)
2m2,677s
nejlepší bezplatný čistič systému pro Windows 10
(INFO) Provedení testů: 1, selhání: 0, chyby: 0, přeskočení: 0, uplynulý čas: 128,513 s - v TestSuite
(INFO)
(INFO) Výsledky:
(INFO)
(INFO) Provedené testy: 1, selhání: 0, chyby: 0, přeskočení: 0
(INFO)
(JENKINS) Záznam výsledků testu
(INFO) —————————————————————————
(INFO) BUILD SUCCESS
(INFO) —————————————————————————
(INFO) Celkový čas: 02:51 min
(INFO) Hotovo v: 2017-11-25T12: 58: 45 + 05: 30
(INFO) Konečná paměť: 12M / 28M
(INFO) —————————————————————————
Čekání, až Jenkins dokončí sběr dat
(JENKINS) Archivace D: cucumberFinal multiple pom.xml do com / cucumber.example / 0.0.1-SNAPSHOT / cucumber.example-0.0.1-SNAPSHOT.pom
kanál zastaven
Dokončeno: ÚSPĚCH
Zpráva Okurky Jenkinsové
Okurka Excel
Otestujte automatizaci skriptů
Je třeba provést následující konfiguraci.
Strategie návrhu testu:
- Vytvořte obslužný program čtečky Excel, který má schopnost brát jako vstupní parametr „název sloupce“ listu Excel a na oplátku poskytne „sloupcovou hodnotu“ listu Excel pro tento „sloupcový sloup“.
- Vytvořte soubor funkcí, který má název sloupce listu Excel zadaný v uvozovkách v kterémkoli z jeho kroků.
- Nyní vytvořte odpovídající soubor Stepdef pro soubor funkcí a použijte parametry (arg1, arg2 atd. Vytvořené, pokud jsme zadali slovo v uvozovkách nad souborem funkcí) jako vstup pro aplikaci Excel Reader (vytvořenou v kroku 1).
- Nyní máme sloupcovou hodnotu listu aplikace Excel, kterou lze použít jako vstup do souboru Stepdef.
- Proveďte soubor funkcí vytvořený ve výše uvedeném kroku.
Soubor funkcí
Vlastnosti: Název vaší funkce
Chci použít tuto šablonu pro svůj soubor funkcí
Pozadí:
Vzhledem k tomu, že používám službu Gmail a přistupuji k „obrazovce“ obrazovky.
Vzhledem k tomu jsem specifikoval uživatelské jméno jako „uživatelské jméno“ a heslo jako „heslo“.
Vzhledem k tomu, klikněte na tlačítko Přihlásit se.
Scénář: Vytvořit novou zprávu z datové tabulky
Když otevírám vyskakovací okno, vyskakovací okno.
A specifikuji jako „Komu“ a předmět jako „Předmět“ a kliknu na tlačítko Odeslat.
Pak bych měl vidět zprávu o úspěchu.
Soubor 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 Soubor 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'); } } }
Soubor 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
Jakmile je výše uvedená konfigurace dokončena, stačí spustit soubor funkcí.
Pozorování
Soubor Stepdef převezme data z listu aplikace Excel a provede testovací kroky uvedené v souboru funkcí.
Zde je výsledek provedení testovacího případu, jak je uvedeno v konzole Eclipse.

Závěr
BDD je budoucnost automatizace testů, protože umožňuje všem zúčastněným stranám podílet se na vytváření testovacího skriptu, zejména poskytovat jejich vstupy přes soubor Feature.
Cucumber je široce používaný nástroj BDD a má mnoho integrací a funkcí, které je ještě třeba implementovat do automatizace testů. Na Okurce aktivně pracuje několik skupin / komunit.
Pokud jste dobře obeznámeni s okurkou, můžete pracovat na jakémkoli nástroji BDD dostupném na trhu, protože většina nástrojů funguje podobně jako okurka.
Doufáme, že jste se o Cucumberovi s Jenkinsem dozvěděli prostřednictvím tohoto podrobného tutoriálu.
Doporučené čtení
- Výukový program Python DateTime s příklady
- Cucumber Selenium Tutorial: Cucumber Java Selenium WebDriver Integration
- Výukový program pro skriptování prostředí Unix s příklady
- Výukový program pro vyhledání prvku selen pomocí textu s příklady
- Java „toto“ klíčové slovo: Výukový program s příklady kódu
- Výukový program BDD a okurky s příklady
- Výukový program pro zpracování výjimek C # s příklady kódu
- Testování automatizace pomocí nástroje Cucumber Tool a Selenium - Selenium Tutorial # 30