前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >pytest文档41-参数化 ids 用例描述为中文时控制台输出unicode

pytest文档41-参数化 ids 用例描述为中文时控制台输出unicode

作者头像
上海-悠悠
发布2020-06-17 15:21:52
1.2K0
发布2020-06-17 15:21:52
举报
文章被收录于专栏:从零开始学自动化测试

前言

使用 pytest.mark.parametrize 参数化的时候,加 ids 参数用例描述有中文时,在控制台输出会显示unicode编码,中文不能正常显示。 使用 pytest_collection_modifyitems 钩子函数,对输出的 item.name 和 item.nodeid 重新编码。

问题描述

参数化 ids 用例描述有中文

代码语言:javascript
复制
import pytest

# test_ids.py
import pytest
# 作者:上海-悠悠

def login(username, password):
    '''登录'''
    # 返回
    return {"code": 0, "msg": "success!"}

# 测试数据
test_datas = [
    ({"username": "yoyo1", "password": "123456"}, "success!"),
    ({"username": "yoyo2", "password": "123456"}, "success!"),
    ({"username": "yoyo3", "password": "123456"}, "success!"),
]

@pytest.mark.parametrize("test_input,expected",
                         test_datas,
                         ids=[
                             "输入正确账号,密码,登录成功",
                             "输入错误账号,密码,登录失败",
                             "输入正确账号,密码,登录成功",
                         ]
                         )
def test_login(test_input, expected):
    '''测试登录用例'''
    # 获取函数返回结果
    result = login(test_input["username"], test_input["password"])
    # 断言
    assert result["msg"] == expected

cmd终端运行 pytest test_ids.py -v

注意 [\u8f93\u5165\u6b63 …] 这种不叫乱码,这叫 unicode 编码

pytest_collection_modifyitems

在项目的根目录写个 conftest.py 文件,加以下代码

代码语言:javascript
复制
def pytest_collection_modifyitems(items):
    """
    测试用例收集完成时,将收集到的item的name和nodeid的中文显示在控制台上
    :return:
    """
    for item in items:
        item.name = item.name.encode("utf-8").decode("unicode_escape")
        print(item.nodeid)
        item._nodeid = item.nodeid.encode("utf-8").decode("unicode_escape")

cmd 控制台重新运行

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-06-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 从零开始学自动化测试 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 问题描述
  • pytest_collection_modifyitems
相关产品与服务
命令行工具
腾讯云命令行工具 TCCLI 是管理腾讯云资源的统一工具。使用腾讯云命令行工具,您可以快速调用腾讯云 API 来管理您的腾讯云资源。此外,您还可以基于腾讯云的命令行工具来做自动化和脚本处理,以更多样的方式进行组合和重用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档