在上一篇中,我们搭建好了Selenium+Cucumber+Java的自动化测试环境。

这一篇我们就赶紧开始编写我们的第一个BDD测试用例。

我们在新建的java项目中,新建一个文件夹名为features。

然后右键点击该文件夹,新建一个名为test.feature的新文件。

文件建好后,你会看到他呈现出与普通文本文件不同的样式,并且自带很多内容:

这些内容实际是cucumber给我们提供的feature模板,我们按照这个模板写出第一个测试用例。

我们先用自然语言。

结合Given,When,And,Then这些关键字来编写测试用例:

◆ Feature: Test baidu search for selenium

◆ Search for selenium on baidu

@tag

◆ Scenario: Test Baidu search for selenium

◆ Given I navigate to baidu

◆ When I send keyword into searchbox

◆ And I click search button

◆ Then The correct search result is returned

可以看到,这个用例就是用自然表述性语言撰写的,具有很高的可读性。

不需要懂代码也都能看明白这个用例测试的内容:就是去到百度,然后搜索关键字,判断搜索是否成功。

这个用例既然是自然语言撰写的,也就还暂时不能实现自动化执行。

我们接下来还要编写这个用例对应的实际selenium java代码的实现过程。

其实就是用java对我们的用例进行「翻译」,好让selenium能读懂,并进行测试的执行。

首先,在src目录下新建package名为runner。

然后新建一个java class名为cucumberRunner,这个类里面我们写入如下代码:

这个类主要起的作用实际上就是我们cucumber的执行入口,同时他定义了cucumber用例执行时的一些特性。

比如CucumberOptions标签里,features指定用例文件的目录,glue则指定对应java翻译代码的位置。

写好这个类以后,我们可以马上右键对他点击。

运行Run As -> JUnit Test。

运行之后,系统输出了一些日志:

从日志里面我们可以看到,系统提示:我们定义了4个测试步骤,但都没有实现。

下面我们马上来实现这些步骤。

在src目录下新建stepDefinitions包。

然后在包下新建一个java class名为TestBaidu。

这个类里面我们就实现之前的feature里面定义的测试步骤。

我们输入如下代码:

写好以后,再次运行runner类,可以看到测试执行成功了!

下一篇我们来使用tags对cucumber测试用例进行分组。

敬请期待...

推荐阅读:

相关文章