Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/285.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 为什么pytest输出ANSI转义字符?_Python_Pytest_Ansi Colors - Fatal编程技术网

Python 为什么pytest输出ANSI转义字符?

Python 为什么pytest输出ANSI转义字符?,python,pytest,ansi-colors,Python,Pytest,Ansi Colors,当运行下面的pytest代码时,我得到了一个断言错误。出于某种原因,预期的消息是用ansi转义码输出,而不是用颜色输出文本。我使用的是Windows机器、VSCode和git bash作为终端 import click from click.testing import CliRunner from uptimer.uptimer import check def test_check_one_url(mocker): mocker.patch("requests.head&

当运行下面的pytest代码时,我得到了一个断言错误。出于某种原因,预期的消息是用ansi转义码输出,而不是用颜色输出文本。我使用的是Windows机器、VSCode和git bash作为终端

import click
from click.testing import CliRunner
from uptimer.uptimer import check

def test_check_one_url(mocker):
    mocker.patch("requests.head", return_value=mock_response_object(200))

    runner = CliRunner()
    result = runner.invoke(check, ["dummyurl"], color=True)

    expected_message = click.style("dummyurl -> 200", fg="green")
    assert result.output == f"{expected_message}\n"
Pytest提供以下输出:

E       AssertionError: assert 'dummyurl -> 200\n' == '\x1b[32mdumm... 200\x1b[0m\n'
E         - dummyurl -> 200
E         ? -----               ----
E         + dummyurl -> 200

我能够通过安装一个软件包来去除ansi代码,从而拼凑出一个解决方案

from click.testing import CliRunner
from uptimer.uptimer import check
from strip_ansi import strip_ansi

def test_check_one_url(mocker):
    mocker.patch("requests.head", return_value=mock_response_object(200))

    runner = CliRunner()
    result = runner.invoke(check, ["dummyurl"], color=True)

    expected_message = strip_ansi(click.style("dummyurl -> 200", fg="green"))
    assert result.output == f"{expected_message}\n"