Rspec过滤功能

在代码测试中,有时候由于种种原因会遇到想指定一些不需要跑的测试,即exclude一些文件或者目录。有两种方式可以实现:

第一种方法:

在rspec 3.2版本之后提供了一个--exclude-pattern的参数,该参数就是告诉rspec在运行测试脚本时跳过指定的文件

比如我们不想运行features下面的测试:

rspec --exclude-pattern "spec/features/*_spec.rb"

如果我们不想运行多个目录下的测试:

rspec --exclude-pattern "spec/features/*_spec.rb, spec/models/*_spec.rb"
另一种写法是:
rspec --exclude-pattern "spec/{features, models}/*_spec.rb"
第二种方法:

通过rspec提供的tag标签
rspec提供了一个--tag(简写-t)的参数来过滤一些测试用例, tag可以是一个简单的字符串,也可以是一个key:value的键值对

it "example I'm working now", focus: true do; end

feature 'comment race', :js => true, focus: true do; end

这样为代码添加了focus参数,
如果只运行带有tag的代码:

rspec -t focus spec/.

如果需要过滤掉带有tag的代码:

rspec -t ~focus spec/.

你也可以为标签设置一个值

it 'generates reports', speed: 'slow' do; end

然后执行

rspec . -t speed:slow #只运行标签speed值为slow的代码
rspec . -t ~speed:slow #只运行不带有标签speed值为slow的代码

参考:
https://makandracards.com/makandra/32259-rspec-tagging-examples-and-example-groups

https://relishapp.com/rspec/rspec-core/v/2-4/docs/command-line/tag-option

https://relishapp.com/rspec/rspec-core/docs/configuration/exclude-pattern

你可能感兴趣的:(Rspec过滤功能)