1. 活文档,一段代码认识 cucumber
# language :zh-CN
@baidu1
功能:*** 数据驱动百度搜索
场景大纲:*** 数据驱动百度搜索
#界面-首页
假设我在浏览器打开@@@@@https://www.baidu.com/
#界面-输入查询条件
当我通过ID在输入框@@@@@kw@@@@@输入@@@@@<Input>
并且我通过ID点击@@@@@su
#界面-验证查询结果
那么我将会在界面上看到@@@@@<Output>
例子:*** 测试数据
|Input |Output |
|java |java |
|github |github |
说明:
2. 认识 cucumber 的关键字
cucumber 的原生代码是基于 ruby 的,cucumber 的命令行安装可以参考如下链接:
cucumber 安装链接
$ script/cucumber --i18n zh-CN
| feature | "功能" |
| background | "背景" |
| scenario | "场景" |
| scenario_outline | "场景大纲" |
| examples | "例子" |
| given | "* ", "假如" |
| when | "* ", "当" |
| then | "* ", "那么" |
| and | "* ", "而且" |
| but | "* ", "但是" |
| given (code) | "假如" |
| when (code) | "当" |
| then (code) | "那么" |
| and (code) | "而且" |
| but (code) | "但是" |
通过这些概念的了解,我们就很容易的能读懂这个脚本了,数据驱动实现百度搜索
3. Cucumber 的工作原理
说明:
4. cucumber 实现 web 自动化测试
通过前面的讲解,大家明白 cucumber 实现自动化也是需要底层技术的,底层技术无非就是实现对 web 浏览器的驱动,我们使用 selenium2 的 webDriver 来实现。
通过下面的链接大家可以了解到,cucumber 可以通过多少种开发语言来实现与底层驱动的映射。
cucumber github
5. 在 idea 里面的代码结构
说明:
6.代码映射与实现
开篇的脚本回过头来再看一下,这个脚本的特点就是方便阅读,但是单单靠这个脚本是不能把自动化跑起来的,需要底层的 driver 来实现,下面这段代码就是与之对应的技术实现代码。
package com.XXXX.autoTest.webApp;
import cucumber.api.java.After;
import cucumber.api.java.Before;
import cucumber.api.java.en.Given;
import cucumber.api.java.en.When;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
/**
* Created by Administrator on 2015/10/21.
*/
public class StepDefinitions {
private WebDriver driver;
@Before
public void setUp() {
System.setProperty("webdriver.chrome.driver", "res/chromedriver.exe");
driver = new ChromeDriver();
}
@Given("^我在浏览器打开@@@@@(.*)$")
public void openUrl(String url) {
driver.get(url);
}
@When("^我通过ID在输入框@@@@@(.*)@@@@@输入@@@@@(.*)$")
public void inputById(String id, String value) {
driver.findElement(By.id(id)).sendKeys(value);
}
@When("^我通过ID点击@@@@@(.*)$")
public void clickById(String id) {
driver.findElement(By.id(id)).click();
}
@After
public void tearDown() {
driver.quit();
}
}
通过对照这段代码与开篇的脚本大家不难发现,两者的对应是靠 java 的注解来匹配的。
7.运行代码
java 代码的要集成 junit 或 testng 来实现脚本的运行。