Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在Unittest中测试Docopt命令行应用程序?_Python_Unit Testing_Docopt - Fatal编程技术网

Python 在Unittest中测试Docopt命令行应用程序?

Python 在Unittest中测试Docopt命令行应用程序?,python,unit-testing,docopt,Python,Unit Testing,Docopt,有人能告诉我如何测试用Docopt(Python)编写的cli应用程序吗?GitHub上有人发布了这个 import unittest from docopt import docopt import your.entry.point.of.sum as sum # you can import the doc string from the sum module doc = sum.__doc__ # suppose now the doc is: # Sum two number

有人能告诉我如何测试用Docopt(Python)编写的cli应用程序吗?GitHub上有人发布了这个

import unittest
from docopt import docopt
import your.entry.point.of.sum as sum

# you can import the doc string from the sum module
doc = sum.__doc__

# suppose now the doc is:
#     Sum two numbers.
#     Usage: summation.py <x> <y>

# then write your test cases
class TestCLIParser(unittest.TestCase):
    def test_sum(self):
        args = docopt(doc, ["1", "3"])
        self.assertEqual(args["<x>"], "1")
        self.assertEqual(args["<y>"], "3")

   def and_so_on(self):
        ...
导入单元测试
从docopt导入docopt
将您的.entry.point.of.sum导入为sum
#您可以从sum模块导入单据字符串
doc=总和__
#假设现在文档为:
#求两个数的和。
#用法:summation.py
#然后编写测试用例
类TestCLIParser(unittest.TestCase):
def测试和(自身):
args=docopt(doc,[“1”,“3”])
self.assertEqual(args[“”],“1”)
self.assertEqual(args[“”],“3”)
def和_so_on(自我):
...
我知道了,但是有人能告诉我如何测试程序的输出吗?此示例仅测试参数

class TestCLI(unittest.TestCase):
    def test_sum(self):
        cmd = shlex.split("sum 1 3")
        output = subprocess.check_output(cmd)
        self.assertEqual(output, "4")

尽管您可以使用
unittest
模块来驱动这种测试,但它并不是严格意义上的单元测试。一个简单的求和程序有简单的输出,很容易在这样的代码中捕获。但是,随着程序向更复杂的方向发展,在源代码中维护期望值变得更加困难。对于这种类型的测试,我推荐。

那么您想捕获这个问题中的标准值吗?