我正在为以下函数编写单元测试:
def _parse_args():
parser = argparse.ArgumentParser(
description='Script to configure appliance.'
)
parser.add_argument('--config_file',
help='Path to a JSON configuration file')
print parser.parse_args()
return parser.parse_args()
当我在没有给出配置文件的情况下运行该函数时(使用上面函数中的 print 语句进行验证):
parser.parse_args()=命名空间(config_file=None)
在我的单元测试中,我在没有给出配置文件的情况下运行该函数,并包含一个assertEquals:
self.assertEquals(my_script._parse_args(), 'Namespace(config_file=None)')
但这会产生断言错误:
AssertionError: Namespace(config_file=None) != 'Namespace(config_file=None)'
如果我将单元测试更改为不带引号:
self.assertEquals(my_script._parse_args(), Namespace(config_file=None))
我收到一个名称错误:
NameError: global name 'Namespace' is not defined
显然使用引号不是正确的方法,但我如何让它断言 Namespace(config_file=None)
正在发生?
最佳答案
改变
self.assertEquals(my_script._parse_args(), Namespace(config_file=None))
至
self.assertEquals(my_script._parse_args(), argparse.Namespace(config_file=None))
Namespace
是您导入的 argparse
模块的一个属性。您没有单独导入 Namespace
。
不带参数执行代码的演示:
print _parse_args() == argparse.Namespace(config_file=None) # True
关于Python单元测试: Assertion Error issue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36331131/