Ansible分子剧本的测试失败

Ansible分子剧本的测试失败,ansible,molecule,Ansible,Molecule,我正在创建一个sudo角色,并想用Molecule测试,如果规则不正确,该角色将失败 我们如何定义我们期望剧本会因分子而失败 例如,如果我有以下配置: sudo__entries: - name: super_alice content: "alice ALL NOPASSWD" 角色将失败,因为visudo不会验证文件 这就是我要测试的行为。您可以修改converge.yml以使用与此单元测试范例类似的方法,使用救援块测试故障场景: 试试看{ foo(); Assert.fail

我正在创建一个sudo角色,并想用Molecule测试,如果规则不正确,该角色将失败

我们如何定义我们期望剧本会因分子而失败

例如,如果我有以下配置:

sudo__entries:
  - name: super_alice
    content: "alice ALL NOPASSWD"
角色将失败,因为
visudo
不会验证文件


这就是我要测试的行为。

您可以修改
converge.yml
以使用与此单元测试范例类似的方法,使用救援块测试故障场景:

试试看{
foo();
Assert.fail();
}捕获(FooE例外){
//捕获到来自foo()的预期异常
}
role
sudo
的一个示例失败场景将有一个类似以下内容的
converge.yml

---
-名称:不收敛
主持人:全部
任务:
-区块:
-名称:“包括sudo”
包括以下角色:
名称:“sudo”
寄存器:预期\u失败
-名称:“检查执行已暂停”
失败:
msg:“执行应在此任务之前停止”
注册:不应该运行吗
救援:
-断言:
即:
-定义了预期的\u故障
-不应运行未定义

您还可以使用一个
verify.yml
来补充这一点,以断言故障场景没有使主机处于损坏状态。

我自己还没有找到一种正确的方法来以令人满意的方式执行此操作。同时,您可能对默认情况下未启用的(请参阅)感兴趣,我找到了关于什么是副作用的文档,但它无助于测试剧本的失败。我用一个例子更新了我的问题。