如何解决如何运行单元测试来测试带有 argparse 属性的脚本?
我有一个带有 argparse 的简单程序 my_code.py 和带有测试代码的 test_code.py。请帮助我如何正确运行 test_code.py。当我尝试基本命令时,出现如下错误:
测试:python -m unittest test_code.py
AttributeError: 'module' 对象没有属性 'py'
测试用例:python -m unittest test_code.Test_Code
python -m unittest: 错误:参数太少
测试方法:python -m unittest test_code.Test_Code.test_double_name
python.exe -m unittest: 错误:需要以下参数:名称
# my_code.py
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("name")
parser.add_argument('-d','--double',action="store_true")
def double_name(new_name):
if args.double:
return new_name + new_name
else:
return new_name
if __name__ == "__main__":
args = parser.parse_args()
print(double_name(args.name))
# test_code.py
import unittest
import my_code
class Test_Code(unittest.TestCase):
def test_double_name(self):
my_code.args = my_code.parser.parse_args([])
self.assertEqual(my_code.double_name('test-name'),'test-name')
my_code.args = my_code.parser.parse_args(["test-name","-d"])
self.assertEqual(my_code.double_name('test-name'),'test-nametest-name')
if __name__ == "__main__":
unittest.main()
解决方法
您好,您的解析器用法不正确调用变量
代码.py
code.py
import argparse
parser = argparse.ArgumentParser()
parser.add_argument(
"--name",metavar="name",type=str,)
parser.add_argument(
"--double",metavar="double",)
def double_name(new_name):
if args.double:
return new_name + new_name
else:
return new_name
if __name__ == "__main__":
args = parser.parse_args()
print(double_name(args.name))
对于测试 argparse,您可以查看 This Post
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。