2

引数なしで外部コマンドを呼び出してテストしようとすると、次のように python2.7 の unittest モジュールを使用して CalledProcessError 例外がスローされます。

import unittest

class MyTest(unittest.TestCase)
    def testCommand(self):
        cmd = 'MyCommand'
        gotLog = 'UndefinedGot'
        with self.assertRaises(CalledProcessError) as context:
            gotLog = subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT).strip()
        expectedLog = 'some error'
        self.assertEqual(context.exception.message, expectedLog)

ただし、テストを実行してもまだ得られます

Traceback (most recent call last):   File "MyTest.py", line 51, in testCommand
   gotLog = subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT).strip()
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 544, in check_output:
    raise CalledProcessError(retcode, cmd, output=output)
CalledProcessError: Command 'MyCommand' returned non-zero exit status 2

単体テストの例外テストが外部コマンドを処理できないということですか。たとえば、例外が他の場所で傍受されたのですか?

ありがとう!

4

1 に答える 1

2

名前が踏みにじられたとしか思えないCalledProcessError、多分明示的に言うと助かる

with self.assertRaises(subprocess.CalledProcessError) as context:
于 2013-03-04T16:53:43.803 に答える