Cucumber入门之_World
1. World:
World可以看做是Cucumber在运行每个场景之前所要创建的对象的实例,它不仅使得每一个Step Definition可以调用该实例的方法,而且使得为该项目定义的Ruby类是也可以调用该实例的方法。World在Cucumber中被定义为方法,接受可变参数mudules,以及一个proc:
1 def World(*world_modules, &proc)2 2 RbDsl.build_rb_world_factory(world_modules, proc) 3 end
下面看一个我自己写的小示例:
目录结构如下:
env.rb:该文件通常用于准备环境变量, 这里我加载了三个文件。
1 require 'rubygems'2 require 'watir-webdriver'3 require 'rspec'
world.rb
1 module MyModule 2 3 def self.foo(name) 4 puts "MyModule_FOO: #{name} " 5 end 6 7 def boo(key) 8 puts "MyModule_BOO: #{key}!" 9 end10 11 end12 13 World(MyModule)
在该文件中定义了一个module,在该module中定义了两个方法:一个实例方法boo, 一个类方法foo。最后把定义的这个模块传递给World. 这样以来我们在运行feature的时候,在其它地方(step_definitions或自定义ruby类文件)就可以调用这个module里面的方法了。
test.feature
1 Feature:Test2 In order to test how to use world3 as a learner4 I want to practice to use world5 6 Scenario: practice to use hooks7 Given try to use the cucumber keyword
在这个feature文件中我定义的比较简单,只定义了一个scenario,且该scenario中只有一个步骤Given。因为这个小例子是为了说明World的用法,所以这里不对feature做过多讨论。
test.rb
1 Given /^try to use the cucumber keyword$/ do2 @page = Home.new3 @page.visit!4 MyModule.foo("*step_definitions*")5 end
在这个step_definitions文件中,是对feature文件中的具体操作实现。因为我们都知道feature文件中只是做了一些描述,具体的执行是放到step_ definitions下面的文件里面的。在这个文件中我new了一个Home文件(看下面Home文件的定义),并且调用了在Home文件中定义的visit!方法。最后一行,我直接调用了在world.rb文件中定义的module的方法foo(因为foo是一个类方法,所以可以直接调用。而boo方法是实例方法,调用前必须实例化一个对象)。
Home.rb
1 class Home2 3 def visit!4 MyModule.foo("*Home_page_module*")5 end6 7 end
这个文件是我为该项目自己定义的一个ruby类文件,里面定义了一个visit!方法,该方法也调用了world.rb文件中的类方法foo。
根据文章一开头提到的,World不仅使得Step Definition可以调用该实例的方法,而且使得为该项目定义的Ruby类也可以调用该实例的方法。如此那么程序正常应该会分别输出这两句话。
结果:
1 C:\Ruby192\bin\ruby.exe -e $stdout.sync=true;$stderr.sync=true;load($0=ARGV.shift) C:\Ruby192\bin/cucumber D:/cucumber/mycucumber/features/test.feature --format Teamcity::Cucumber::Formatter --expand --color -r features2 Testing started at 上午10:37 ...3 MyModule_FOO: *Home_page_module* 4 MyModule_FOO: *step_definitions* 5 1 scenario (1 passed)6 1 step (1 passed)7 0m0.000s
结果中3,4行和我们预期的一致。
本文转自贺满博客园博客,原文链接:http://www.cnblogs.com/puresoul/archive/2012/03/05/2380022.html,如需转载请自行联系原作者。
Cucumber入门之_World相关推荐
- Cucumber 入门一
(转自:http://www.cnblogs.com/jarodzz/archive/2012/07/02/2573014.html) 第一次看到Cucumber和BDD(Behavior Drive ...
- Cucumber入门之_argument
a) Multi-line Text 在feature文件中,我们可以嵌入多行文本(multi-line string)作为参数,我们需要用一对三个双引号把我们的文本括起来.<The RSpec ...
- cucumber入门
1.Cucumber是什么 Cucumber是一个在敏捷团队十分流行的自动化的功能测试工具,但是其不仅仅是一个测试工具,它能够为我们建立一个易读的,可执行的特性文档. 2.Cucumber ...
- cucumber 入门笔记
参考文章: https://www.jianshu.com/p/3857f2c3a8d4 Feature: Is it friday yet?this is a descriptionsEverybo ...
- hue集成mysql报错_hue集成hive访问报database is locked
这个问题这应该是hue默认的SQLite数据库出现错误,你可以使用mysql postgresql等来替换 hue默认使用sqlite作为元数据库,不推荐在生产环境中使用.会经常出现database ...
- cucumber java从入门到精通_cucumber java从入门到精通(4)Scenario Outline及数据驱动...
cucumber java从入门到精通(4)Scenario Outline及数据驱动 到目前为止,我们的TodoList类工作良好,不过离我们的预期--任务清单系统还是有不少差距,究其原因不过如下: ...
- cucumber java 实例_cucumber java从入门到精通(3)简单实现及断言
cucumber java从入门到精通(3)简单实现及断言 上一节里我们定义了step的java代码实现文件,step就是测试步骤及断言的集合,我们先定义出来,以后可以驱动开发以及在持续集成时重用. ...
- 自动化测试框架cucumber_BDD测试框架之Cucumber使用入门
▼ 关注测试局| 会上瘾 1什么是Cucumber cucumber早在ruby环境下应用广泛,作为BDD框架的先驱,cucumber后来被移植到了多平台,简单来说cucumber是一个测试框架,就像 ...
- cucumber java hooks_Cucumber入门之_HooksBackground
Hooks& Background Hooks 在很多情况下,我们需要在每个scenario之前(before)和之后(after)执行某些相同的操作.比如说在测试完成后要关闭浏览器.在Cu ...
最新文章
- python函数中参数前面的*和**的含义
- 2020人工神经网络第一次作业
- java 实现 指派_TAP任务指派问题的汇编实现
- 2.4 multiset
- jmeter命令行运行-分布式测试
- Redis 学习---(12)Redis HyperLogLog
- == 和 === 有什么区别
- 前端开发者如何利用 CSS 实现酷炫的变色方案?
- i java 字节码_用java字节码解释i++和++i
- JQuery表单验证插件EasyValidator
- 宽度学习详解(Broad Learning System)
- 2022西藏最新消防设施操作员模拟考试试题题库及答案
- 七日之都账号服务器,永远的7日之都服务器数据互通吗_永远的7日之都iOS和安卓能一起玩吗_玩游戏网...
- ListView--QQ联系人样式
- raptor累乘流程图_程序设计基础
- 【设计模式】建造者模式:你创建对象的方式有它丝滑吗?
- 应用性能测试关注点(来自听云)
- ARM-LED灯--蜂鸣器
- set内嵌结构体 的插入和删除
- 使用FROM装数据而报错出现argument type mismatch的原因