Python单元测试: Assertion Error issue

标签 python unit-testing

我正在为以下函数编写单元测试:

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/

相关文章:

Python:wx.Frame子类中的self.control是什么意思?

python - 避免嵌套for循环python

python 3 : How can I get news articles that contain a certain keyword

node.js - 涵盖 Istanbul 尔和 Mocha/柴的功能

javascript - 使用 QUnit 测试 Angular.js

c++ - 通过 C++ 中的工厂传递模拟

Python拥抱脸部警告

python - 只需在没有互联网连接的情况下使用 python anaconda

python - 如果未安装可选模块,则测试代码的行为

java - 我应该如何对使用 google guava 库的代码进行单元测试,尤其是 io 包中的代码?