标签: systemexit

使用 Pytest 捕获 SystemExit 消息

我正在使用 pytest 编写测试。我遇到的情况是,SystemExit如果输入错误,某些函数会在终端上抛出一些错误消息。

我想为抛出的情况编写测试SystemExit,并验证输出错误消息中是否有特定的字符串。

这是代码:


def test_validate_input():
  ...
  with pytest.raises(SystemExit) as error:
    _validate_function(test_wrong_input)
  assert error.value.code == 1
Run Code Online (Sandbox Code Playgroud)

error如果我运行验证某些输入的实际函数,我无法获得输出错误消息,因为我在命令行上得到的消息。请让我知道我在这里缺少什么。

编辑:

我正在调用 asubprocess.call_output来运行引发错误的命令。我必须在调用stderr=subprocess.STDOUT中添加call_output作为参数才能获取错误消息。然后我在测试中使用了@p3j4p5的答案。

python systemexit pytest python-3.x

5
推荐指数
1
解决办法
1729
查看次数

我们可以在Java Web应用程序中使用System.exit()吗?

我们正在使用Java开发Web应用程序。我想使用System.exit()我的一种方法而不是返回。据我所知,如果我使用该应用程序,它将进入关闭模式。

有人可以给我建议吗?

java web-applications systemexit

4
推荐指数
2
解决办法
2646
查看次数

有没有一种方法可以记录 Java 中调用 System.exit 的堆栈跟踪

我认为有一种方法可以做到这一点SecurityManager,但我不想为此在应用程序中引入它。

有没有办法使用其他解决方案捕获并记录所谓的 exit() 的堆栈跟踪?

java systemexit stack-trace

4
推荐指数
1
解决办法
295
查看次数

有没有办法让argparse.ArgumentParser.parse_args()不要退出参数错误?

例如:

import argparse

parser = arparse.ArgumentParser()
# parser.add_argument(...) ...
args = parser.parse_args(args_list)
Run Code Online (Sandbox Code Playgroud)

问题是,parser.parse_args如果出现错误,将自动退出args_list.是否有一个设置让它引发更友好的异常?SystemExit如果有任何方法,我不想要从中捕获并从中提取所需的错误消息.

python systemexit argparse

3
推荐指数
1
解决办法
3280
查看次数

呼叫等级,等待它退出,再次呼叫

我正在编写一个程序,我想循环遍历几个配置文件,并在每个文件中调用一个以该文件名作为参数的类,并等待它完成.目前我在做:

    for (int i = 1; i <= 3; i++){
        String[] a = new String[1];
        a[0] = "data/config" + i + ".xml";
        edu.cwru.sepia.Main2.class.getMethod("main", String[].class).invoke(null, (Object)a);
    }
Run Code Online (Sandbox Code Playgroud)

然而,发生的情况是该类只被调用一次,然后整个程序停止.我认为类中有一个退出行,但由于它是一个JAR文件,我无法确定,我无法编辑它.

我们假设是这样的; 我该如何解决这个问题呢?也就是说,在调用以exiting结束之后,我的外部循环方法继续,并再次使用下一个参数调用该类.

java systemexit securitymanager

0
推荐指数
1
解决办法
117
查看次数