欢迎光临
梦想从学习开始!

Ruby测试框架Rspec初探| 小熊测试

本文主要介绍 Ruby测试框架Rspec初探| 小熊测试,小熊希望对大家的学习或者工作具有一定的参考学习价值,在测试领域有所提升和发展

  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 "— 结束本次测试 —"

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 "— 结束本次测试 —"

end

 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小熊分享邦(www.xxfxb.com),希望大家能坚持软件测试之路,谢谢。

赞(0) 打赏
未经允许不得转载:小熊分享邦 » Ruby测试框架Rspec初探| 小熊测试

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏