qq-2780619724

 

1、fixture之 ids 参数

  1)概述:

    a、配合 params 参数化时使用,给每个测试用例分配 id  ( 用例id的作用:用来描述测试用例的标题 )  ;

    b、fixture之 ids 参数,中文编码问题:注意 [\u8f93\u5165\u6b63 ...] 这种不叫乱码, 这叫 unicode 编码,

       需要 在 conftest.py 中 写个hook函数转码 (  def pytest_collection_modifyitems(items):  );

 

 

  2)  详情:

    a、配合 params 参数化时使用,给每个测试用例分配 id  ( 用例id的作用:用来描述测试用例的标题 )

    test_ee.py 示例代码如下:

import pytest

# fixture 之 ids 参数 , 配合 params 参数化时使用,给每个测试用例分配 id
# ( 用例id的作用:用来描述测试用例的标题 )
user_data = [
    {\'name\': \'sky\', \'age\': 18, \'hobby\': \'游泳\'},
    {\'name\': \'Jack\', \'age\': 250, \'hobby\': \'搞钱\'},
    {\'name\': \'Tony\', \'age\': 250, \'hobby\': \'玩游戏\'}
]

test_name = [
    \'用例1:sky\',
    \'用例2:Jack\',
    \'用例3:Tony\'
]


@pytest.fixture(params=user_data, ids=test_name)
def login(request):
    user = request.param
    return user


def test_login(login):
    user = login
    print(f"用户名为:{user[\'name\']},年龄为:{user[\'age\']},爱好为:{user[\'hobby\']}")
View Code

    执行结果如下:

  

  没加 ids 参数的效果如下:

 

 

 b、fixture之 ids 参数,中文编码问题:注意 [\u8f93\u5165\u6b63 ...] 这种不叫乱码, 这叫 unicode 编码,

    需要 在 conftest.py 中 写个hook函数转码 ; 

   关于,def pytest_collection_modifyitems(items):  的使用, 参考资料:https://blog.csdn.net/waitan2018/article/details/104334932

# 函数名固定
# 把 测试用例名,节点名的 unicode编码(\u7528\u4f8b1\uff1a) 变成 中文 ;
def pytest_collection_modifyitems(items):
    """
    测试用例搜集完成时,将搜集到的 item 的 name 和 nodeid的中文显示在控制台上
    :param items:
    :return:
    """
    for item in items:
        item.name = item.name.encode(\'utf-8\').decode(\'unicode_escape\')
        item._nodeid = item.nodeid.encode(\'utf-8\').decode(\'unicode_escape\')

 

执行结果如下,Unicode码已经变成中文了,如下:

 

 

2、@pytest.mark.parametrize 参数化时也可以加ids参数

  test_ee_2.py 代码如下:

import pytest

user_data = [
    {\'name\': \'Tom\', \'age\': 20, \'hobby\': \'游泳\'},
    {\'name\': \'Jack\', \'age\': 250, \'hobby\': \'搞钱\'},
    {\'name\': \'Tony\', \'age\': 250, \'hobby\': \'玩游戏\'}
]

test_name = [
    \'用例1:Tom\',
    \'用例2:Jack\',
    \'用例3:Tony\'
]


@pytest.mark.parametrize(\'user_data\', user_data, ids=test_name)
def test_login(user_data):
    print(f"用户名为:{user_data[\'name\']},年龄为:{user_data[\'age\']},爱好为:{user_data[\'hobby\']}")
View Code

  执行结果如下:

 

分类:

技术点:

相关文章:

  • 2021-10-21
  • 2022-12-23
  • 2022-12-23
  • 2021-09-04
  • 2022-12-23
  • 2021-06-18
  • 2022-12-23
  • 2022-02-21
猜你喜欢
  • 2021-12-18
  • 2022-12-23
  • 2022-12-23
  • 2021-07-22
  • 2022-02-15
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案