擅长:python、mysql、java
<p>这是<code>test_argparse.py</code>文件中的<code>ArgumentTypeError</code>测试(可在开发存储库中找到)</p>
<p><code>ErrorRaisingAgumentParser</code>是在文件开头定义的子类,它重新定义了<code>parser.error</code>方法,因此它不会退出,并将错误消息放在<code>stderr</code>上。那部分有点复杂。在</p>
<p>由于我描述了注释的重定向,它不能直接测试<code>ArgumentTypeError</code>。相反,它必须测试它的信息。在</p>
<pre><code># =======================
# ArgumentTypeError tests
# =======================
class TestArgumentTypeError(TestCase):
def test_argument_type_error(self):
def spam(string):
raise argparse.ArgumentTypeError('spam!')
parser = ErrorRaisingArgumentParser(prog='PROG', add_help=False)
parser.add_argument('x', type=spam)
with self.assertRaises(ArgumentParserError) as cm:
parser.parse_args(['XXX'])
self.assertEqual('usage: PROG x\nPROG: error: argument x: spam!\n',
cm.exception.stderr)
</code></pre>