Rspec 是Ruby社区的主流测试框架,今天简单玩了一下,觉得有几个特性是十分值得借鉴的
树状的用例组织结构
我们知道很多测试用例工具,例如: testlink ,其测试用例组织是树状的,但是,我之前接触到的测试框架,例如: TestNg ,它是无法支持这种用例组织结构的
Rspec却可以!
简单的讲,Rspec可以仅由 describe与it 两种语句块构成
首先声明,Rspec是基于 BDD 测试思想的,并没有传统意义上的 测试用例(testcase) 的概念
describe可以层层嵌套describe及it,从而构成树状结构
it语句块是这棵树的叶子节点,功能上接近于测试用例这个概念,用例断言(Assertion)一般就在这里面
还是看示例吧
先看代码,描述的是一盏飞利浦台灯在出厂之路上所经历的种种测试
# encoding: utf-8
describe 'PHILIPS台灯 - 出厂质检' do
# Rspec是一门测试DSL 但其中可以夹杂原生Ruby代码 比如这个echo()函数
def echo(input)
puts input
end
# Rspec与TestNG/JUnit一样 也有类似before/after的hook
# 其作用范围为其所在的describe
# before在it语句块之前执行
before(:each) do
echo '--- 开始本次测试 ---'
end
# after在it语句块之后执行
after(:each) do
echo "--- 结束本次测试 ---\n\n"
end
it "冒烟测试(插电源 - 开开关 - 灯亮了)" do
echo '插电源 - 开开关 - 灯亮了'
end
# describe可以与it语句块并列 例如 "冒烟测试" 与 "正向测试"
# describe可以层层嵌套 从测试用例组织的角度讲 就是构成了一个树状结构
describe '正向测试' do
describe '发光性' do
# it语句块接近于传统意义上的testcase
it '亮度可以调节' do
echo 'min-1-2-3-4-5-max'
end
it '最大亮度不得超过10000' do
echo 'no more than 1w'
end
it "只能发射白色光" do
echo 'white light'
end
end
describe '节能性' do
it "符合国家节能标准" do
echo '符合国标'
end
it "每小时耗电不多于0.000001度" do
echo '0.000001kwh'
end
end
end   describe '异常测试' do
# 这里的before hook就只能作用在'异常测试'describe之内了
before(:each) do
echo '--- 准备一盏全新台灯 ---'
end
describe '破坏性测试' do
it '榔头砸不坏' do
echo '榔头砸不坏'
end
it '泡水里不短路' do
echo '泡水里不短路'
end
end
describe '耐久性测试' do
it '连续使用七天七夜不灭' do
echo '连续使用七天七夜不灭'
end
it '风吹雨打也不能阻止我发光' do
# 对于未完成的用例 可以先把描述写下来 具体的用例里面使用pending关键字占位
pending '这个用例待完成'
end
end
end
end
再看一下运行结果报表,两相对照,用例的树状结构一目了然
用例命名简单化,且有实际含义
之前写用例,用例命名是一个十分关键但也很头疼的工作,大家懂得
而Rspec本质上是一门 DSL (Domain Specific Language),实际上,从上面的示例代码和运行结果截屏中大家已经可以看到,在Rspec中是无须给测试用例命名的,或者说,用例的命名可以非常书面化,一般就是用例意图的简单描述(即:describe及it关键字后面跟着的描述性语句)
支持未完成的用例先占位
不解释,还是看图
对于未完成的用例,可以先把描述写下来,具体的用例步骤里面使用pending关键字占位
it '风吹雨打也不能阻止我发光' do
# 对于未完成的用例 可以先把描述写下来 具体的用例里面使用pending关键字占位
pending '这个用例待完成'
end
反映在用例报表中,这个用例就被标志为黄色了 树状的用例组织结构/用例命名简单化/支持未完成的用例先占位,这三个特性使得使用Rspec编写测试用例时,思路可以非常自由,开阔,很像是在写 markdown ,来不及的地方,也可以先使用 pending 占位
写完以后,跑一遍用例,生成的html报表可读性很强,可以直接用于策划,开发,测试之间的沟通(必杀技,有木有!)
其它不错的特性
Rspec是一门DSL,但它仍旧支持在用例中参杂原生Ruby代码,如下所示
Rspec与TestNG/JUnit一样,也有类似before/after的hook(如下所示),其作用范围是当前的describe
由于describe允许层层嵌套,因此,Rspec中的before/after的作用域也是层层嵌套的,比之TestNG的Before/After,灵活性大大超过
describe 'PHILIPS台灯 - 出厂质检' do
# Rspec是一门测试DSL 但其中可以夹杂原生Ruby代码 比如这个echo()函数
def echo(input)
puts input
end
# Rspec与TestNG/JUnit一样 也有类似before/after的hook
# 其作用范围为其所在的describe
# before在it语句块之前执行
before(:each) do
echo '--- 开始本次测试 ---'
end
# after在it语句块之后执行
after(:each) do
echo "--- 结束本次测试 ---\n\n"
end
最新内容请见作者的GitHub页:http://qaseven.github.io/

Ruby测试框架Rspec初探相关推荐

  1. java bdd 框架_开发者测试: 实现BDD测试框架(JSpec)

    There are two ways of constructing a software design. One way is to make it so simple that there are ...

  2. 自动化测试框架cucumber_BDD测试框架之Cucumber使用入门

    ▼ 关注测试局| 会上瘾 1什么是Cucumber cucumber早在ruby环境下应用广泛,作为BDD框架的先驱,cucumber后来被移植到了多平台,简单来说cucumber是一个测试框架,就像 ...

  3. 5个最佳的Android测试框架

    2019独角兽企业重金招聘Python工程师标准>>> 谷歌的Android生态系统正在不断地迅速扩张.有证据表明,新的移动OEM正在攻陷世界的每一个角落,不同的屏幕尺寸.ROM / ...

  4. Web应用渗透测试框架Arachni

    Web应用渗透测试框架Arachni Arachni是一款Ruby语言编写的Web应用渗透测试框架.当用户指定目标后,该框架可以自动扫描网站页面,对页面中的链接.表单.Cookie.HTTP Head ...

  5. PHP自动测试框架Top 10

    2019独角兽企业重金招聘Python工程师标准>>> 对于很多PHP开发新手来说,测试自己编写的代码是一个非常棘手的问题.如果出现问题,他们将不知道下一步该怎么做.花费很长的时间调 ...

  6. Lockdoor Framework:一套自带大量网络安全资源的渗透测试框架

    博客&文章 Reddit:[传送门] Medium.com:[传送门] Xploit Lab:[传送门] Station X:[传送门] Kelvin Security :[传送门] All ...

  7. 关于Android的自动化测试,你需要了解的5个测试框架

    Appium Appium是一个开源的移动测试工具,支持iOS和Android,它可以用来测试任何类型的移动应用(原生.网络和混合).作为一个跨平台的工具,你可以在不同的平台上运行相同的测试.为了实现 ...

  8. 动态模型之增压暂停【FunTester测试框架】

    距离上次对FunTester测试框架功能规划之后,已经很久没有更新过功能规划了,主要因素是FunTester测试框架目前支持的功能已经完全满足工作需求.无论是分布式性能测试框架,还是全链路性能测试支持 ...

  9. 2020年你不可不知的自动化框架,可替代Selenuim的测试框架Top10

    Selenium是一种开源自动测试工具.它可以跨不同的浏览器和平台在Web应用程序上执行功能,回归,负载测试.Slenium是最好的工具之一,但确实有一些缺点. 业界有一些强大的工具可以替代Selen ...

最新文章

  1. liunx内核编译安装
  2. 美团O2O排序解决方案——线下篇
  3. SDL介绍和简单实用
  4. neo4j设置节点或者边的显示,包括颜色、属性、大小
  5. 在数字图像处理中特征点是什么
  6. 通俗易懂告诉你CPU/GPU是什么?
  7. 华为c8818刷原生Android 6,华为C8818(电信4G)一键救砖教程,轻松刷回官方系统
  8. win32获取当前运行程序的内存地址_一个lock锁,就可以分出程序员对问题处置方式水平的高中低...
  9. redis php方法,PHP操作Redis的基本方法
  10. java 匿名内部类多态,下面这个简单的程序验证匿名内部类的多态属性,但出现错误。...
  11. 安全bios手册(5)
  12. 【Java】菜鸟教程个人Java学习笔记
  13. SpringBoot整合WebService实例
  14. R语言中dim函数_R语言入门:函数介绍(3)—— %gt;%
  15. 易买网更多新闻代码_《女神异闻录5》新网站源代码内藏玄机 4月25日有更多情报...
  16. 2016年开源巨献:百度71款开源项目
  17. 《裁梦为魂》 - 银临 :OI版
  18. 【博弈论】博弈论入门笔记(四类基础博弈+SG函数)
  19. 计算机更新无法卸载,电脑上有无法卸载的软件怎么办?
  20. PMI-ACP考试没过怎么办?如何补考?

热门文章

  1. GDI+ 学习记录(11): 路径渐变画刷 - PathGradientBrush
  2. jquery Fancybox插件的应用
  3. dropdown.js
  4. CentOS6 英文系统安装ibus
  5. RedMonk 语言排行:Kotlin 上升 8 位,TS 快进前 10
  6. leetcode算法题解(Java版)-11-贪心大法
  7. SSG140 web、telnet、ssh无法访问,仅支持console
  8. 【下有对策】verycd没有的资源有很多方法下载
  9. Shell tips
  10. STL源码剖析之算法:lower_bound