【发布时间】:2021-04-29 09:15:10
【问题描述】:
请帮我编写单元测试:
我有一个带有一个函数的简单程序,当运行带有 argparse 参数 --double 的程序时,它只返回双倍的“name”。否则返回单个名称
# code.py
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("name")
parser.add_argument('-d', '--double', action="store_true")
args = parser.parse_args()
def double_name(new_name):
if args.double:
return new_name + new_name
else:
return new_name
print(double_name(args.name))
- 在cmd中运行
python code.py test-name我有结果:test-name - 在cmd中运行
python code.py test-name -d我有结果:test-nametest-name
我想编写 unittest 来检查这个函数,但我不知道如何在单元测试中使用 argparse 参数调用这个函数。
# test_code.py
import unittest
import code
class Test_Code(unittest.TestCase):
def test_double_name(self):
# without -d
self.assertEqual(code.double_name('test-name'), 'test-name')
# with -d
self.assertEqual(code.double_name('test-name'), 'test-nametest-name')
if __name__ == "__main__":
unittest.main()
这个测试的run命令应该怎么看?如果我添加到代码:
code.args = code.parser.parse_args(["test-name", "-d"])
标准命令python -m unittest test_code.py raise AttributeError
AttributeError: 'module' 对象没有属性 'py'
【问题讨论】:
标签: python unit-testing testing argparse python-unittest