我有一个测试调用脚本使用subprocess.check_调用. 我要检查脚本中的论点和论点的有效性。所以我做了这个:
try:
self.assertRaises(subprocess.CalledProcessError, subprocess.check_call, ['myscript.py', 'myBadArgument'])
except AssertionError:
pass
测试实际上通过了,因为正确的断言被提出,但是我希望保持断言消息和相关的堆栈转储不会被打印到屏幕上。在
我该怎么做?
谢谢!在
Tags:
要抑制子进程的错误消息,请重定向其stderr:
另外,不要捕捉
AssertionError
。这不会抑制子进程的错误消息;它只会导致测试错误地通过,即使子进程没有引发错误。在这里的问题是我过度使用了
assert()
语句。我使用assert
检查用户是否给了我存在的文件,或者脚本中有意义的值。在这是我的误会。现在我看到正确的方法是检查数据并在库元素中引发适当的异常,然后在面向用户的脚本中捕捉这些异常并提供一个无调用堆栈的消息。在
一旦我清理了这个问题,我的测试通过了正确的异常,没有不必要的消息。在
相关问题 更多 >
编程相关推荐