【发布时间】:2017-04-15 09:20:58
【问题描述】:
从this great answer 我学会了将参数解析放到它自己的函数中来简化单元测试。
从this answer 我了解到,有时您需要抛出自己的解析器错误才能让 argparse 执行您想要的行为。例如:
if not (args.process or args.upload):
parser.error('No action requested, add -process or -upload')
但是很难测试它是否能做到它应该做的,因为抛出解析器错误也会退出程序。所以像这样的 TestCase 是行不通的:
def test_no_action_error(self):
'''Test if no action produces correct error'''
with self.assertRaises(ArgumentError) as cm:
args = parse_args(' ')
self.assertEqual('No action requested, add -process or -upload', str(cm.exception))
第一个问题的 cmets 建议 this question。但我不了解如何在测试文件中使用此代码。
【问题讨论】:
-
@wim 没有错,我只是在 SO 上找不到一个问题,说这样做(以及如何)
标签: python unit-testing argparse