2

在标准织物示例中,我们有

def test():
    with settings(warn_only=True):
        result = local('./manage.py test my_app', capture=True)
    if result.failed and not confirm("Tests failed. Continue anyway?"):
        abort("Aborting at user request.")

有没有办法检查整个方法的状态?

例如,

def method1():
   run_this_as_sudo
   run_this_as_sudo

我如何检查整个方法是否在结构中失败,而不是查看每个单独的方法调用?处理这个问题的唯一方法是在由多个 shell 命令组成的每个方法上添加某种 try catch 吗?

4

1 回答 1

2

你可以这样做:

╭─mgoose@Macintosh  ~
╰─$ fab -f tmp.py test
Ok
Something failed

Done.
╭─mgoose@Macintosh  ~
╰─$ cat tmp.py
from fabric.api import local, task, quiet

@task
def test():
    with quiet():
        if local("whoami").succeeded and local("echo good").succeeded:
            print "Ok"
        else:
            print "Something failed"


        if local("exit 1").succeeded and local("echo good").succeeded:
            print "Ok"
        else:
            print "Something failed"

我只是在条件中将调用链接在一起,并使用它们返回的布尔值来进行条件切换。

于 2013-08-01T06:10:12.513 回答