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