当前位置: 首页 > 面试题库 >

您如何为python模块的argparse部分编写测试?

蓟雪峰
2023-03-14
问题内容

我有一个使用argparse库的Python模块。如何为代码库的该部分编写测试?


问题答案:

您应该重构代码并将解析移至函数:

def parse_args(args):
    parser = argparse.ArgumentParser(...)
    parser.add_argument...
    # ...Create your parser as you like...
    return parser.parse_args(args)

然后在main函数中,您应该使用以下命令调用它:

parser = parse_args(sys.argv[1:])

(其中sys.argv代表脚本名称的第一个元素被删除,以使其在CLI操作期间不作为附加开关发送。)

在测试中,然后可以使用要测试的参数列表调用解析器函数:

def test_parser(self):
    parser = parse_args(['-l', '-m'])
    self.assertTrue(parser.long)
    # ...and so on.

这样,您就不必只为了测试解析器而执行应用程序的代码。

如果稍后需要在应用程序中更改和/或向解析器添加选项,请创建一个工厂方法:

def create_parser():
    parser = argparse.ArgumentParser(...)
    parser.add_argument...
    # ...Create your parser as you like...
    return parser

以后,您可以根据需要对其进行操作,然后进行如下测试:

class ParserTest(unittest.TestCase):
    def setUp(self):
        self.parser = create_parser()

    def test_something(self):
        parsed = self.parser.parse_args(['--something', 'test'])
        self.assertEqual(parsed.something, 'test')


 类似资料:
  • 我有一个使用argparse库的Python模块。如何为代码库的这一部分编写测试?

  • 问题内容: 我一直在为工作中的简单任务制作Python脚本,从来没有真正打扰过将它们打包供其他人使用。现在,我被分配为REST API制作Python包装器。我对如何开始一无所知,我需要帮助。 我有的: (只想尽可能地具体一点)我已经准备好virtualenv,它也位于github中,还存在用于python的.gitignore文件,以及用于与REST API交互的请求库。而已。 这是当前目录树

  • 问题内容: 在组织python模块时,我的Mac OS X系统一团糟。我的硬盘上到处都有程序包,而没有用于组织它们的特定系统。 您如何使一切易于管理? 问题答案: 我的建议: 阅读安装Python模块。 阅读分发Python模块。 从setuptools开始使用easy_install 。阅读setuptools的文档。 始终使用virtualenv。我的site-packages目录 仅 包含

  • 我想问一下,我如何用Python编写以下模块。 这样我就可以使用say调用它

  • 问题内容: 我需要为AngularJS编写一个自定义模块,但是我找不到关于该主题的任何好的文档。如何为AngularJS编写一个可以与他人共享的自定义模块? 问题答案: 在这种情况下,您认为文档无法再为您提供帮助,一个很好的学习方法是查看其他已经构建的模块,看看其他人是如何做到的,他们如何设计架构以及如何将它们集成到其中。他们的应用。 在查看其他人的工作之后,您至少应该有一个起点。 例如,看看任何

  • 生气却不可犯罪,不可含怒到日落,也不可给魔鬼留地步。从前偷窃的,不要再偷。总要劳力,亲手作正经事,就可有余,分给那缺少的人。污秽的言语,一句不可出口,只要随事说造就人的好话,叫听见的人得益处。(EPHESIANS 4:26-29) 随着对Python学习的深入,其优点日渐突出,让读者也感觉到Python的强大了。这种强大体现在“模块自信”上,因为Python不仅有很强大的自有模块(标准库),还有海