自动化测试学习笔记
(发现这篇东西貌似草稿里待了很久了,写写完吧)
放下好久了,重新拿起来学习一下 以前一直用的是单元测试框架,现在打算拿cucumber来做所谓的‘文档驱动开发’。
想当然得直接在终端里执行gem install cucumber,以为一切正常,却跳出个错误, ERROR: Error installing json: The ‘json’ native gem requires installed build tools. Please update your PATH to include build tools or download the DevKit from ‘http://rubyinstaller.org/downloads’ and follow the instructions at ‘http://github.com/oneclick/rubyinstaller/wiki/Development-Kit’, 赶紧下了个Development-Kit,并安装说明先后执行:
ruby dk.rb init
ruby dk.rb install
期间确认初始化生成的config.yml里写着正确的ruby的安装路径。这下终于能正常的安装cucumber了。
要开始测试了,先建立一个文件夹cucumber作为工程文件夹,在终端下进入这个文件夹,直接执行命令cucumber,出现如下错误
You don’t have a ‘features’ directory. Please create one to get started. See http://cukes.info/ for more information.
这说明cucumber安装成功,且工程文件夹里缺个features的文件夹,依瓢画葫芦,建一个吧,然后再执行cucumber,此时出现提示
0 scenarios 0 steps 0m0.000s
Cucumber顺利运行,但由于features下没有其他文件,所以结果为空。接下来,根据网上提供的教程,在features下建立几个文件夹
+features
++step_definition
++support
1.support文件夹下,一般放工程文件的库文件,举个例子,我需要watir来测试网络应用,那么在这个文件夹下建一个env.rb文件,里面写上require‘watir’,同时,由于需要判断测试结果成功与否,所以还需要require ‘test/unit’,之后跑脚本的之前,会先自动运行env.rb,调用这些文件。
此外,可以在support下面再建个hook.rb文件.里头写上
Before do @browser = Watir::Browser.new #打开浏览器 @browser.maximize end
After do @browser.close end
处理测试脚本运行之前、之后该做的一些琐碎的事,避免把这些重复的代码写到测试脚本里去。
2.features文件夹下,存放的是测试用例,也就是cucumber引以为傲的文档驱动测试的‘文档’部分。还是举个例子,我们需要测试登陆,所以先写个1_login.feature文件,用文本编辑器打开这个文件,写入
Feature:登录 In order to use the system as a user I want to login
Background: Given visit “website” Then make sure user is logout
Scenario: input correct username,password,login successfully When input username “bob” And input password “******” And click “登陆” button Then login successfully And logined user is “Bob”
尤为神奇的是,cucumber还支持中文,只要在文件开头加一行#zh-CN,这个测试用例就能写作
功能:登录 为了正常使用产品 作为普通用户 我希望能正常进行登录
背景: 假如 访问 “website” 而且 确认处于未登录状态
场景: 输入正确的用户名、正确的密码,登陆成功 当 输入用户名 “bob” 而且 输入密码 “******” 而且 点击 “登陆” 按钮 那么 登陆成功 而且 登陆的用户是 “bob”
此时在终端下继续执行cucumber,此时会把你写在feature里的步骤罗列一遍,并提示
You can implement step definitions for undefined steps with these snippets:
pending # express the regexp above with the code you wish you had end
3.这时候,我们就需要用的step_definition文件夹下的rb文件了,我们可以建一个1_login_step.rb文件,写上
Given /^确认处于未登录状态$/ do if @browser.text.include?(“我的首页”) then @browser.link(:text,’退出’).click end end
When /^输入用户名 “([^"]*)”$/ do |username| @browser.text_field(:name, ‘login’).set username end
…………
基本原则就是根据测试用例里的假如、而且、那么等步骤,写下一个个block,用正则表达式区分不同的步骤,写下各种浏览器的操作。等这一步完成了,测试脚本基本上就初具雏形了。
继续回到终端下,执行cucumber,等着浏览器噼里啪啦地运行完我们就能在终端里看到漂亮的测试报告了。由于windows下那个要了亲命的编码问题,中文智能显示乱码,就贴一张网上教程里的结果图意思一下吧。










