+ feature : read requirement +scenario : testing situation,including + Given/ + when/ + then
Feature:用来描述咱们须要测试的功能
Scenario: 用来描述测试场景
Given: 前置条件
When: 描述测试步骤
Then: 断言web
features:用来存放天然语言的用例文件
step_definitions:用来存放java代码实现的测试用例
jars:cucumber-jvm的相关jar包都放在这里
implementation:存放被测试的代码,也就是项目的实现文件chrome
https://docs.cucumber.io/guides/10-minute-tutorial/
https://docs.cucumber.io/guides/browser-automation/浏览器
<dependency> <groupId>info.cukes</groupId> <artifactId>cucumber-java</artifactId> <version>1.2.5</version> </dependency> <dependency> <groupId>info.cukes</groupId> <artifactId>cucumber-core</artifactId> <version>1.2.5</version> </dependency> <dependency> <groupId>info.cukes</groupId> <artifactId>cucumber-jvm-deps</artifactId> <version>1.0.5</version> </dependency> <dependency> <groupId>info.cukes</groupId> <artifactId>gherkin</artifactId> <version>2.12.2</version> </dependency> <dependency> <groupId>info.cukes</groupId> <artifactId>cucumber-junit</artifactId> <version>1.2.5</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> </dependency> <!-- Cucumber Tag related jars (start) --> <dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-server-standalone</artifactId> <version>3.12.0</version> </dependency>
Feature: Is it Friday yet? Everybody wants to know when it's Friday Scenario: Sunday isn't Friday Given today is Sunday When I ask whether it's Friday yet Then I should be told "Nope"
@Given("^today is Sunday$") public void today_is_Sunday() throws Throwable { // Write code here that turns the phrase above into concrete actions throw new PendingException(); } @When("^I ask whether it's Friday yet$") public void i_ask_whether_it_s_Friday_yet() throws Throwable { // Write code here that turns the phrase above into concrete actions throw new PendingException(); } @Then("^I should be told \"([^\"]*)\"$") public void i_should_be_told(String arg1) throws Throwable { // Write code here that turns the phrase above into concrete actions throw new PendingException(); }
在com/cucumber/hellocucumber目录下面编写com/cucumber/hellocucumber。java类,用junit执行run一下。会自动去读取app
@RunWith(Cucumber.class) @CucumberOptions(features={"src/main/resources/features"}) public class RunCucumberTest { }
通常用junit执行run一下,都会发现不少PendingException这时候就须要编写代码,使测试经过。jvm
public class Stepdefs { private String today; private String actualAnswer; @Given("^today is Sunday$") public void today_is_Sunday() throws Throwable { this.today = "Sunday"; } @When("^I ask whether it's Friday yet$") public void i_ask_whether_it_s_Friday_yet() throws Throwable { this.actualAnswer = IsItFriday.isItFriday(today); } @Then("^I should be told \"([^\"]*)\"$") public void i_should_be_told(String expectedAnswer) throws Throwable { assertEquals(expectedAnswer, actualAnswer); } } IsItFriday。java 以下: public class IsItFriday { static String isItFriday(String today) { if (today.equals("Friday")) { return "TGIF"; } return "Nope"; } }
Feature: Is it Friday yet? Everybody wants to know when it's Friday Scenario Outline: Today is or is not Friday Given today is "<day>" When I ask whether it's Friday yet Then I should be told "<answer>" Examples: | day | answer | | Friday | TGIF | | Sunday | Nope | | anything else! | Nope |
@Given("^today is \"([^\"]*)\"$") public void today_is(String today) throws Throwable { // Write code here that turns the phrase above into concrete actions this.today = today; //throw new PendingException(); } @When("^I ask whether it's Friday yet$") public void i_ask_whether_it_s_Friday_yet() throws Throwable { this.actualAnswer = IsItFriday.isItFriday(today); } @Then("^I should be told \"([^\"]*)\"$") public void i_should_be_told(String expectedAnswer) throws Throwable { assertEquals(expectedAnswer, actualAnswer); }
Cucumber自己不是一个浏览器自动化测试工具,可是经过和Selenium WebDriver结合能够完成一些简单的浏览器自动化测试工做。ide
<dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-server-standalone</artifactId> <version>3.12.0</version> </dependency>
若是你使用的时候chrom浏览器,那么须要在系统属性里面设置chromedriver.exe的路径工具
System.setProperty("webdriver.chrome.driver", "C:/swdtools/Chrome/chromedriver.exe");
Feature: search cheese on google Scenario: Finding some cheese Given I am on the Baidu search page When I search for "Cheese!" Then the page title should start with "cheese"
public class ExampleSteps { private final WebDriver driver = WebDriverFactory.createWebDriver(); @Given("^I am on the Baidu search page$") public void I_visit_google() { driver.get("https:\\www.baidu.com"); } @When("^I search for \"(.*)\"$") public void search_for(String query) { WebElement element = driver.findElement(By.id("kw")); // Enter something to search for element.sendKeys(query); // Now submit the form. WebDriver will find the form for us from the element element.submit(); } @Then("^the page title should start with \"(.*)\"$") public void checkTitle(String titleStartsWith) { // Google's search is rendered dynamically with JavaScript // Wait for the page to load timeout after ten seconds new WebDriverWait(driver,10L).until(new ExpectedCondition<Boolean>() { public Boolean apply(WebDriver d) { return d.getTitle().toLowerCase().startsWith("cheese"); // Should see: "cheese! -Google Search" } }); } @After() public void closeBrowser() { driver.quit(); } }
@RunWith(Cucumber.class)
@CucumberOptions(features={"src/main/resources/features"})
public class RunCucumberTest {测试
}ui