当前位置: 首页 > 软件库 > 开发工具 > 测试工具 >

cucumber-api

Web Service API 验证
授权协议 Apache
开发语言 Ruby
所属分类 开发工具、 测试工具
软件类型 开源软件
地区 不详
投 递 者 吕向荣
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

cucumber-api,用于验证响应格式为JSON的Web Service API。可以用来单独测试Web Service API,或者与Calabash配合进行手机APP和Web Service API的联合测试。

安装步骤:

以Debian环境为例,其他环境如Redhat,Windows等主要是Ruby安装命令的差别。

安装 Ruby 1.9.3

说明: cucumber-api 依赖ruby版本要不低于1.9.3

sudo apt-get install ruby
sudo apt-get install ruby1.9.1-dev

安装后版本:1.9.3p194

shen@debian:~$ ruby -v
ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-linux]
shen@debian:~$ gem -v 1.8.23

安装 Cucumber

先设置淘宝的 gem 源:

sudo gem sources --remove http://rubygems.org/  sudo gem sources -a http://ruby.taobao.org/

再次查看 gem 源:

shen@debian:~$ sudo gem sources --list *** CURRENT SOURCES *** http://ruby.taobao.org/

安装cucumber:

sudo gem install cucumber

查看已安装 cucumber 版本:

shen@debian:~$ cucumber --version 2.0.0

安装 cucumber-api

sudo gem install cucumber-api

查看 gem list:

shen@debian:~$ gem list

*** LOCAL GEMS ***

addressable (2.3.8)
builder (3.2.2)
cucumber (2.0.0)
cucumber-api (0.3)
cucumber-core (1.1.3)
diff-lcs (1.2.5)
domain_name (0.5.24)
gherkin (2.12.2)
http-cookie (1.0.2)
json-schema (2.5.1)
jsonpath (0.5.6)
mime-types (2.6.1)
multi_json (1.11.1)
multi_test (0.1.2)
netrc (0.10.3)
rest-client (1.8.0)
unf (0.1.4)
unf_ext (0.0.7.1)

试运行sample项目

创建cucumber项目

shen@debian:~/bdd-api-sample$ cucumber --init
  create   features
  create   features/step_definitions
  create   features/support
  create   features/support/env.rb
shen@debian:~/bdd-api-sample$ find
.
./features
./features/step_definitions
./features/support
./features/support/env.rb

在features/support/env.rb中加入 require 'cucumber-api':

shen@debian:~/bdd-api-sample$ cat features/support/env.rb require 'cucumber-api'

下载 https://github.com/hidroh/cucumber-api/blob/master/features/sample.feature

shen@debian:~/bdd-api-sample$ touch features/sample.feature
shen@debian:~/bdd-api-sample$ vi features/sample.feature 
shen@debian:~/bdd-api-sample$ cat features/sample.feature # https://github.com/HackerNews/API Feature: Hacker News REST API validation Scenario: Verify top stories JSON schema When I send and accept JSON And I send a GET request to "https://hacker-news.firebaseio.com/v0/topstories.json?print=pretty" Then the response status should be "200" And the JSON response should follow "features/schemas/topstories.json" Scenario Outline: Verify item JSON schema When I send and accept JSON And I send a GET request to "https://hacker-news.firebaseio.com/v0/topstories.json?print=pretty" Then the response status should be "200" And the JSON response root should be array When I grab "$[0]" as "id" And I send a GET request to "https://hacker-news.firebaseio.com/v0/item/{id}.json" with: | print  |
      | pretty | Then the response status should be "200" And the JSON response root should be object And the JSON response should have <optionality> key "<key>" of type <value type> Examples: | key   | value type | optionality |
      | id    | numeric    | required    |
      | score | numeric    | required    |
      | url   | string     | optional    |

下载 https://github.com/hidroh/cucumber-api/blob/master/features/schemas/topstories.json :

shen@debian:~/bdd-api-sample$ cat features/schemas/topstories.json 
{ "$schema": "http://json-schema.org/draft-04/schema#", "type": "array", "items": { "type": "number" }
}

试运行sample:

输入图片说明

设置verbose输出

方式1: 设置环境变量 cucumber_api_verbose=true
再次输入cucumber后,多输出了RestClient的http请求和响应信息,可以帮助调试。

export cucumber_api_verbose=true

输入图片说明

方式2: cucumber -p verbose
前提是 config/cucumber.yml已经正确设置:

shen@debian:~/bdd-api-sample$ cat config/cucumber.yml # config/cucumber.yml ##YAML Template ---
verbose : cucumber_api_verbose=true

输入命令cucumber -p verbose也可以看到RestClient的输出:

输入图片说明

Step扩展

定义3个常用的扩展指令

  • 设置Header,就是curl的-H参数的内容

  • 打印response body

  • 打印格式化后的response body

shen@debian:~/bdd-api-sample$ cat features/step_definitions/api_steps.rb Given(/^I set header key "(.*?)" and value "(.*?)"$/) do |key, value| @headers = {} if @headers.nil?
  p_value = value @grabbed.each { |k, v| p_value = v if value == %/{#{k}}/ } unless @grabbed.nil?
  p_value = File.new %-#{Dir.pwd}/#{p_value.sub 'file://', ''}- if %/#{p_value}/.start_with? "file://" @headers[%/#{key}/] = p_value end Then(/^I dump the JSON response$/) do puts @response.to_s end Then(/^I dump the pretty JSON response$/) do puts @response.to_json_s end
shen@debian:~/bdd-api-sample$ cat features/baidu-map.feature Feature: 根据ip获取地理位置 Scenario: get location by ip When I send a GET request to "http://api.map.baidu.com/location/ip?ip=202.198.16.3&coor=bd09ll&ak=60IFKTCwlIsSpDcGfkx36L8u" Then I dump the pretty JSON response Then the response status should be "200" shen@debian:~/bdd-api-sample$

cucumber增加参数-p verbose时输出response:

输入图片说明

cucumber无参数-p verbose时不输出response: 输入图片说明

  • 我正在设计一个用于 Java8方言的示例项目.我的问题是,我没有得到它运行.我总是得到以下异常层次结构: Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.068 sec <<< FAILURE! - in soy.wimmer.CucumberIT Feature: Cucumber with Java8 Time

  • Java中可以使用cucumber来进行业务逻辑的测试。可以参考链接: https://cucumber.io/docs/cucumber/ 首先新建一个maven项目: 添加依赖: <?xml version="1.0" encoding="UTF-8"?> <project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

  • 在cucumber-jvm 3.x.x中,我想将只有两列的数据表转换为单个对象.此功能在2.x.x中曾经是自动的,但此后已随新的主要版本删除. 码: // Feature Scenario: Scan Barcode Given I Am At The Login Page When I Log In As Valid User | group | gpao | | username | svgp

  • 版权声明:本文为博主原创文章,未经博主允许不得转载。    https://blog.csdn.net/mrleeapple/article/details/84386675 最近玩IDEA,发现导入的项目有问题,报了一个“找不到或者不存在cucumber.api.cli.Main”的错误。卡住了我很久。 后来发现是新版的IDEA在导入时没有提示,以至于我没有配置项目对应的Tomcat服务器,如上

  • 在rails 2里叫cucumber 在rails 3里叫cucumber-rails cucumber-rails 1.0.6升级后(当前1.2.0),就没有了web_steps 和selector support 还有path support 作者的用意是好的,怕因为这个限定或影响了自己cucumber的发挥 同时呢,也少了一个很不错的feature:install,之前scaffold之后会

 相关资料
  • 我正在用TestNG运行cucumber。CucumberRunner类扩展了AbstractTestNGCucumberTests,CucumberRunner类在testng.xml文件中指定。 如果我使用TestNG.xml运行一个简单的TestNG类,那么TestNG结果的输出将显示在控制台中,即测试运行、失败、跳过的总数,如下所示:- test.java 如何用Cucumber在控制台中

  • @使用TestNG在cucumber中执行@Test后,BeforeMethod未执行 我已经将maven与cucumber集成,并使用TestNG编写了脚本。我在pom中添加了必要的依赖项。xml当我执行脚本@BeforeMethod在执行@Test之后不起作用时,你能告诉我是否支持TesNG注释吗?。你能在这方面给我指点迷津吗。 转轮类: 步骤定义: 期望:@before方法应该在每个@Tes

  • 我对cucumber测试框架不熟悉。我的目标是使用Junit和Maven并行运行场景文件。我遵循了以下步骤:https://cucumber.io/docs/guides/parallel-execution/ 我有两个功能文件 特点1: 特点2: 我还有一个runner文件,如下所示: 我的POM如下: 当我用mvn清洁安装运行cucumber测试时,两个场景都使用不同的线程运行。但我运行使用运

  • Cucumber 是一个能够理解用普通语言描述的测试用例的支持行为驱动开发(BDD)的自动化测试工具,旨在提高软件质量并降低维护成本的软件开发过程。用多种语言编写,支持Java、JavaScript、Ruby、.Net等多种开发语言。 Cucumber 可以执行用纯语言编写的可执行规格,并生成报告,说明软件是否按照规格运行。 Cucumber 减少了保持需求规格、测试和文档同步的工作量--有了Cu

  • 我使用eclipse作为IDE和Selenium web驱动程序。我试图在Cucumber-JVM中运行测试。当我运行测试时,它显示给我“NoClassDefoundError”。谁能帮我解决我的问题。所有相关的jar文件都内置到项目文件中。

  • 我们希望在Cucumber中使用外部文件(如excel工作表)实现数据驱动测试,而不使用Cucumber提供的DataTable或Examples关键字。 这是我的特征文件 功能:验证登录页方案大纲:使用excel和数据集驱动数据 当我进入登录页面时,我会使用excel行输入用户名和密码。” 在上面的示例中,我们根据文件中提供的行索引从excel读取数据。 很难在功能文件中写入这么多记录,因为数据