我正在尝试达到这样的条件:如果组存在于服务器中,它应该通过&如果不存在,它应该跳过,并且不应该显示为失败
describe.one do
describe 'testgroup' do
expect(bash("ipa group-show testgroup").exit_status).to eq 0
it { should exist }
end
describe 'testgroup' do
expect(bash("ipa group-show testgroup").exit_status).to_not eq 0
it { should_not exist }
end
end 使用以下命令执行后:
# inspec exec testgroup_test.rb它抛出错误输出如下:
undefined method 'bash' for Rspec::ExampleGroups (No method Error). 请指教,如何在inspec中实现这样的条件测试。
发布于 2021-08-21 10:29:14
要在解决特定于环境的测试之前首先解决错误消息,测试命令结果的正确方法是使用command resource。
让我们考虑一个例子,当我想要在命令成功执行时通过测试,否则失败:
describe command('ipa group-show testgroup') do
its('exit_status') { should eq 0 }
end现在,假设我们有两个环境- "dev“和"qa”。我们可以使用inputs有条件地执行测试。
举个例子:我们可以定义一个名为env的输入。在"dev“环境中,此命令可能不需要成功。而在"qa“中,它应该成功。
# In "dev" any return code from command is ok
if input('env') == 'dev'
control "ipa-group-dev" do
describe command('ipa group-show testgroup') do
its('exit_status') { should be >= 0 }
end
end
end
# In "qa" this command must succeed
if input('env') == 'qa'
control "ipa-group-qa" do
describe command('ipa group-show testgroup') do
its('exit_status') { should eq 0 }
end
end
end我们可以通过将env的值作为输入来运行测试,例如:
inspec exec testgroup_test.rb --input env=devhttps://stackoverflow.com/questions/68870405
复制相似问题