当前位置: 首页 > 知识库问答 >
问题:

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

麹鸿煊
2023-03-14

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

共有1个答案

柯栋
2023-03-14

您应该重构代码,并将解析移到一个函数:

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模块。如何为代码库的该部分编写测试? 问题答案: 您应该重构代码并将解析移至函数: 然后在函数中,您应该使用以下命令调用它: (其中代表脚本名称的第一个元素被删除,以使其在CLI操作期间不作为附加开关发送。) 在测试中,然后可以使用要测试的参数列表调用解析器函数: 这样,您就不必只为了测试解析器而执行应用程序的代码。 如果稍后需要在应用程序中

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

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

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

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

  • argparse 是 Python 内置的一个用于命令项选项与参数解析的模块,通过在程序中定义好我们需要的参数,argparse 将会从 sys.argv 中解析出这些参数,并自动生成帮助和使用信息。当然,Python 也有第三方的库可用于命令行解析,而且功能也更加强大,比如 docopt,Click。 argparse 使用 简单示例 我们先来看一个简单示例。主要有三个步骤: 创建 Argume