首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python测试中忽略的颜色序列

python测试中忽略的颜色序列
EN

Stack Overflow用户
提问于 2019-02-26 11:31:33
回答 1查看 103关注 0票数 2

相关: 粉碎机/彩色#23

我正在重新实现python中的纯提示,以便它能够支持更多的shell。

然而,在测试颜色时,我得到了“未执行”的行为,即我不明白的行为。

测试输出

代码语言:javascript
复制
    def test_prompt_symbol_is_colored_for_successful_command():
        assert str(prompt.prompt_symbol()) == str(colors.primary('❯'))
>       assert str(prompt.prompt_symbol()) == '\x1b[38;2;155;48;255m❯\x1b[39m'
E       AssertionError: assert '❯' == '\x1b[38;2;155;48;255m❯\x1b[39m'
E         - ❯
E         + ❯   ← this one is purple

_colors_test.py_

代码语言:javascript
复制
def test_prompt_symbol_is_colored_for_successful_command():
    assert str(prompt.prompt_symbol()) == str(colors.primary('❯'))
    assert str(prompt.prompt_symbol()) == '\x1b[38;2;155;48;255m❯\x1b[39m'

我测试的对象是:

代码语言:javascript
复制
pytest -v tests/

colors.py

代码语言:javascript
复制
import colorful

primary = colorful.purple1
mute = colorful.gray

prompt.py

代码语言:javascript
复制
from pure import colors

def prompt_symbol(last_command_status=0):
    symbol = colors.primary('❯') if last_command_status == 0 else colors.danger('❯')
    return symbol

问题

第一个断言成功了,而第二个断言失败了,尽管它们应该是等效的。当我否定第一个断言时,不存在转义序列:

代码语言:javascript
复制
>       assert str(prompt.prompt_symbol()) != str(colors.primary('❯'))
E       AssertionError: assert '❯' != '❯'
E        +  where '❯' = str(<colorful.core.ColorfulString object at 0x7f545276f080>)
E        +    where <colorful.core.ColorfulString object at 0x7f545276f080> = <function prompt_symbol at 0x7f54527b79d8>()
E        +      where <function prompt_symbol at 0x7f54527b79d8> = prompt.prompt_symbol
E        +  and   '❯' = str(<colorful.core.ColorfulString object at 0x7f545276f0b8>)
E        +    where <colorful.core.ColorfulString object at 0x7f545276f0b8> = <colorful.core.Colorful.ColorfulStyle object at 0x7f54527c2278>('❯')
E        +      where <colorful.core.Colorful.ColorfulStyle object at 0x7f54527c2278> = colors.primary

在python中手动执行命令给我:

代码语言:javascript
复制
>>> from pure import colors, prompt 
>>> str(colors.primary('❯'))
'\x1b[38;2;155;48;255m❯\x1b[39m'
>>> str(prompt.prompt_symbol())
'\x1b[38;2;155;48;255m❯\x1b[39m'
EN

回答 1

Stack Overflow用户

发布于 2019-02-27 20:46:19

pytest固定

代码语言:javascript
复制
pytest -v --capture=no tests/

有关详细信息,请参阅https://github.com/timofurrer/colorful/issues/23#issuecomment-468008070

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54884561

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档