当测试功能为Click命令时,pytest失败

时间:2019-04-03 07:42:10

标签: python python-3.x pytest

使用Python 3.6.4,Click == 7.0和pytest == 4.4.0。 同时使用Click&pytest时遇到麻烦。

test_foo.py

import unittest

import click
import pytest

@click.command()
def foo():
    print(1)


class TestFoo(unittest.TestCase):
    def test_foo(self):
        foo()

执行pytest test_foo.py::TestFoo::test_foo时说

Usage: pytest [OPTIONS]
Try "pytest --help" for help.

Error: Got unexpected extra argument 
(tests/test_foo.py::TestFoo::test_foo)

为测试方法启用“点击”命令后,所有pytest选项(例如-k-m)均不起作用。

当我注释掉@click.command()的行时,效果很好。

每个人同时使用时如何解决?

1 个答案:

答案 0 :(得分:1)

您应使用ClickRunner隔离测试中单击命令的执行。您的示例已重做:

import unittest
import click
import click.testing


@click.command()
def foo():
    print(1)


class TestFoo(unittest.TestCase):
    def test_foo(self):
        runner = click.testing.CliRunner()
        result = runner.invoke(foo)
        assert result.exit_code == 0
        assert result.output == '1\n'

查看相关的doc page以获得更多示例。