【发布时间】:2019-08-23 08:05:21
【问题描述】:
我正在尝试在 Python 2.6 上运行一个基本的单元测试,该测试采用 argparse 参数。
我的环境受到限制,无法安装任何其他库或使用任何模块进行测试,但 unittest。
但我相信答案就在这里:
How do you write tests for the argparse portion of a python module?
但是,我无法用我的代码重构提供的主要答案。
如果不重构我提供的示例代码,有人可以向我展示一下如何为下面的代码编写一个单元测试,它可以即时使用 -H 和 -S 吗?
提前致谢。
#!python
import argparse
import sys
try:
HOSTNAME = sys.argv[2]
SOMESTRING = sys.argv[3]
except IndexError:
print "Please Enter the Hostname and Somestring"
def argparse_msg():
return "testscript_example -H somehost -S somestring"
def check_arg(args=None):
parser = argparse.ArgumentParser(description="A Test Example", usage=argparse_msg())
parser.add_argument("-H", "--host",
help="HostName",
required=True)
parser.add_argument("-S", "--somestring",
help="HostName",
required=True)
results = parser.parse_args(args)
return (results.host, results.somestring)
def message_test():
print HOSTNAME + " " + SOMESTRING
def main():
message_test()
if __name__ == "__main__":
HOSTNAME, SOMESTRING = check_arg(sys.argv[1:])
main()
【问题讨论】:
-
使用
unittest(或其他测试包)时,您不能为自己的脚本提供命令行值。命令行用于unittest本身(它有自己的解析器)。其他链接:stackoverflow.com/questions/51710083/…、stackoverflow.com/questions/42331049/… -
我仍在努力理解它,如果您能在代码中显示一个基本示例,那就太好了......
标签: python unit-testing argparse python-unittest parameterized-unit-test