在代码测试中,有时候由于种种原因会遇到想指定一些不需要跑的测试文件或者目录,即把一些文件或者目录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"
# another way:
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