在上一篇中,我们搭建好了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测试用例进行分组。
敬请期待...
推荐阅读: