我正在编写验收测试,希望在我的测试工具中有与产品匹配的例外,同时仍将其视为黑盒子。
所以我有> 100个error_codes,格式是这样的。
_error_codes = {
'BAD_NUMBER_FORMAT': 10001,
'ANOTHER_ONE': 10010,
'A_BILLION_MORE': 1000000
}
我可以在字典中用简单的东西创建许多异常:
error_classes = {}
for error in _error_codes:
the_error = camelize(error.lower()) + 'Error'
docstring = "A {0} {1} Product_name error.".format(_error_codes[error], error)
cls_dict = {'__doc__': docstring}
error_classes[the_error] = (type(the_error, (MyBaseError,), cls_dict))
有了这个,我将不得不用字典中的键来捕获异常。即
except error_classes['AnotherOneError']:
这是一种pythonic方式吗?我应该从_error_codes生成每个类的静态文件吗?