use*_*795 1 python argparse python-unittest
我正在使用unittest模块在python中创建一个测试用例。
我确实创建了一个我想从用户那里得到的解析参数列表。但是,当我在执行python脚本时使用该参数时,它给出了错误:“ option -i无法识别用法:testing.py [options] [test] [...]”
代码段:
class Testclass(unittest.TestCase):
@classmethod
def setUpClass(cls):
print "Hello Class"
def test_addnum(self):
print "Execute the test case"
#parser = parse_args(['-i'])
print 'simple_value =', args.inputfile
def parse_args():
parser = argparse.ArgumentParser()
parser.add_argument('-i', help='input file', dest='inputfile')
ns, args = parser.parse_known_args(namespace=unittest)
#args = parser.parse_args()
return ns, sys.argv[:1] + args
if __name__ == '__main__':
unittest.main()
Run Code Online (Sandbox Code Playgroud)
执行上面的脚本时出现的错误m -i somefile.txt是:
option -i not recognized
Usage: testing.py [options] [test] [...]
Options:
-h, --help Show this message
-v, --verbose Verbose output
-q, --quiet Minimal output
-f, --failfast Stop on first failure
-c, --catch Catch control-C and display results
-b, --buffer Buffer stdout and stderr during test runs
Examples:
testing.py - run default set of tests
testing.py MyTestSuite - run suite 'MyTestSuite'
testing.py MyTestCase.testSomething - run MyTestCase.testSomething
testing.py MyTestCase - run all 'test*' test methods
in MyTestCase
Run Code Online (Sandbox Code Playgroud)
任何帮助,将不胜感激。
该脚本捕获了-i命令,同时仍然允许unittest.main执行自己的命令行解析:
import unittest
class Testclass(unittest.TestCase):
@classmethod
def setUpClass(cls):
print "Hello Class"
def test_addnum(self):
print "Execute the test case"
#parser = parse_args(['-i'])
print 'simple_value =', args.inputfile
import argparse
def parse_args():
parser = argparse.ArgumentParser()
parser.add_argument('-i', help='input file', dest='inputfile')
ns, args = parser.parse_known_args(namespace=unittest)
#args = parser.parse_args()
return ns, sys.argv[:1] + args
if __name__ == '__main__':
import sys
args, argv = parse_args() # run this first
print(args, argv)
sys.argv[:] = argv # create cleans argv for main()
unittest.main()
Run Code Online (Sandbox Code Playgroud)
产生:
1113:~/mypy$ python stack44236745.py -i testname -v
(<module 'unittest' from '/usr/lib/python2.7/unittest/__init__.pyc'>, ['stack44236745.py', '-v'])
Hello Class
test_addnum (__main__.Testclass) ... Execute the test case
simple_value = testname
ok
----------------------------------------------------------------------
Ran 1 test in 0.000s
OK
Run Code Online (Sandbox Code Playgroud)
它看起来很笨拙,但确实有效。
这个想法是先运行自己的解析器,捕获-i输入,然后将其余的放回sys.argv。您对的定义parse_args表明您已经在尝试这样做。
| 归档时间: |
|
| 查看次数: |
1277 次 |
| 最近记录: |