Pytest使用parametrize失败用例打印中文
时间: 2023-12-12 18:01:54 浏览: 115
在 Pytest 中使用 parametrize 参数化测试时,如果参数值中含有中文字符,可以使用 Unicode 编码的方式来避免打印失败用例中文乱码的问题。
例如,我们有一个测试用例如下所示:
```
@pytest.mark.parametrize("input_str, expected_output", [("你好", "hello"), ("世界", "world")])
def test_translate(input_str, expected_output):
assert translate(input_str) == expected_output
```
如果运行测试用例时,出现了失败的情况,pytest 将会打印失败用例的详细信息,包括 input_str 参数的值。如果 input_str 中含有中文字符,则可能出现乱码的情况。
为了避免这种情况,我们可以将中文字符转换为 Unicode 编码,例如:
```
@pytest.mark.parametrize("input_str, expected_output", [(u"\u4f60\u597d", "hello"), (u"\u4e16\u754c", "world")])
def test_translate(input_str, expected_output):
assert translate(input_str) == expected_output
```
这样,即使测试用例失败,pytest 也能正确地打印中文字符。
相关问题
Pytest使用parametrize中文入参,打印乱码解决方法
如果在pytest中使用parametrize传递中文参数,控制台输出会出现乱码。这是因为控制台默认的编码格式与中文字符集不兼容。可以通过以下方法解决:
1. 在pytest.ini文件中添加以下内容:
```
[pytest]
console_output_encoding=utf-8
```
2. 在命令行中使用参数 `--console-output-style=classic`,例如:
```
pytest --console-output-style=classic
```
这样做可以将pytest的输出编码格式设置为utf-8,避免中文字符集乱码问题。
另外,如果使用IDE运行pytest,需要确保IDE的编码格式与pytest的输出编码格式一致,否则也会出现乱码问题。
Pytest使用parametrize中文入参
可以使用Unicode编码在parametrize中传入中文入参。例如:
```
import pytest
@pytest.mark.parametrize("input_str, expected_output", [
("你好", "Hello"),
("世界", "World")
])
def test_translate(input_str, expected_output):
assert translate(input_str) == expected_output
```
在这个例子中,我们传入了两个中文字符串 "你好" 和 "世界",并且使用了英文字符串 "Hello" 和 "World" 作为预期输出。注意在代码中要声明文件编码为utf-8。
阅读全文