专栏首页从零开始学自动化测试pytest文档41-参数化 ids 用例描述为中文时控制台输出unicode

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

前言

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

问题描述

参数化 ids 用例描述有中文

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 文件,加以下代码

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 控制台重新运行

本文分享自微信公众号 - 从零开始学自动化测试(yoyoketang),作者:上海悠悠

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-06-12

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • jmeter压测学习8-压测带token的接口

    工作中我们需要压测的接口大部分都是需要先登陆后,带着token的接口(或者带着cookies),我们可以先登陆获取token再关联到下个接口。 比如我现在要压测...

    上海-悠悠
  • python接口自动化10-token登录

    前言 有些登录不是用cookie来验证的,是用token参数来判断是否登录。 token传参有两种一种是放在请求头里,本质上是跟cookie是一样的,只是换...

    上海-悠悠
  • jenkins学习5-jenkins拉取git仓库代码,执行python自动化脚本

    python自动化的脚本开发完成后需提交到git代码仓库,接下来就是用Jenkins拉取代码去构建自动化代码了

    上海-悠悠
  • 任务调度-单体应用定时任务解决方案

    单体应用(并发少、就公司内部使用)、业务比较简单、单一、稳定,传统行业首选,项目初期。

    秋日芒草
  • JAVA实现一个简单的RPC+项目源码

    论坛中说到聊一聊RPC远程过程调用协议 http://www.52itstyle.com/thread-22564-1-1.html RPC(Remote Pr...

    小柒2012
  • [译] 用 Web Worker 改善 Vue 组件性能

    原文:https://vuedose.tips/use-web-workers-in-your-vuejs-component-for-max-performa...

    江米小枣
  • spring cloud zuul网关的作用

    zuul一般有两大作用,1是类似于Nginx的网址重定向,但zuul的重定向的一般是整个spring cloud里在Eureka注册中心的模块.

    算法之名
  • 从零开发一个Java Web项目要点

    原文:www.jianshu.com/p/ab6a9eaacaf3 文章编辑自:Java团长

    好好学java
  • ceph分布式存储-常见MON故障处理

    Monitor 维护着 Ceph 集群的信息,如果 Monitor 无法正常提供服务,那整个 Ceph 集群就不可访问。一般来说,在实际运行中,Ceph Mon...

    Lucien168
  • 从零开发一个Java Web项目要点

    本文章详细的列出了开发一个传统JavaWeb项目需要注意的要点,从环境准备开始到三层架构搭建,需要注意的地方全部罗列出来。

    Java团长

扫码关注云+社区

领取腾讯云代金券