У меня определено это исключение:
class ArgumentsException(Exception):
"""Exception that is raised when incorrect arguments are used."""
pass
Теперь я запускаю свой тест, где я запускаю свою программу через пакет sh
. И когда оно вызывает это ожидаемое исключение, sh
перехватывает само это исключение и затем вызывает его собственное исключение. Можно ли как-нибудь проверить, было ли как-то возбуждено мое первоначальное исключение?
Например, когда я запускаю этот код (этот код должен вызывать это исключение):
sh.python3(
self.main_py_path,
self.live_cfg_path,
self.workflow_cfg_path)
Вместо этого я получаю это исключение:
Traceback (most recent call last):
File "/home/oerp/src/devops-tools/tests/test_main.py", line 153, in test_full_workflow_1
self.workflow_cfg_path)
File "/usr/local/lib/python3.5/dist-packages/sh.py", line 1427, in __call__
return RunningCommand(cmd, call_args, stdin, stdout, stderr)
File "/usr/local/lib/python3.5/dist-packages/sh.py", line 774, in __init__
self.wait()
File "/usr/local/lib/python3.5/dist-packages/sh.py", line 792, in wait
self.handle_command_exit_code(exit_code)
File "/usr/local/lib/python3.5/dist-packages/sh.py", line 815, in handle_command_exit_code
raise exc
sh.ErrorReturnCode_1:
RAN: /usr/bin/python3 /home/oerp/src/devops-tools/main.py /home/oerp/src/devops-tools/tests/configs/__live__.py /home/oerp/src/devops-tools/tests/configs/__workflow__.py
STDOUT:
STDERR:
Traceback (most recent call last):
File "/home/oerp/src/devops-tools/main.py", line 204, in <module>
state = _get_state(args.state, ignore_state=args.ignore_state)
File "/home/oerp/src/devops-tools/main.py", line 68, in _get_state
"__state__.py file must be provided if --ignore-state flag "
exceptions.ArgumentsException: __state__.py file must be provided if --ignore-state flag is not used.
Ну, я могу сделать что-то вроде:
self.assertTrue('ArgumentsException' in str(e.stderr))
Но, может быть, есть более элегантный способ проверить мое исключение?