写点什么

软件测试 / 测试开发丨 Pytest 参数化用例学习笔记

作者:测试人
  • 2023-06-02
    北京
  • 本文字数:984 字

    阅读完需:约 3 分钟

获取更多相关知识

本文为霍格沃兹测试开发学社学员学习笔记分享,文末附原文链接。

Pytest 参数化用例

参数化:通过参数的方式传递数据,从而实现数据与脚本分离,并且可以实现用例的重复生成与执行。装饰器:@pytest.mark.parametrize

单参数

import pytest
search_list = ["appium","selenium","pytest"]
# 参数化实现测试用例的动态生成# 第一种:单参数情况,每一条测试数据都会生成一条测试用例@pytest.mark.parametrize("search_key",["appium","selenium","pytest"," "])def test_search(search_key): assert search_key in search_list
复制代码



多参数+ids 参数重命名

import pytest
# 第二种:多参数情况@pytest.mark.parametrize("username,password",[["right","right"], ["wrong","wrong"], [" ","right"], ["right"," "] ], # 用例重命名-添加 ids 参数,将别名放在列表中 # ids=["right username and right password","wrong username and wrong password","username is null","password is null"]) # ids支持中文 ids=["正确的用户名和密码","错误的用户名和密码","用户名为空","密码为空"])
def test_login(username,password): print(f"登录的用户名:{username}, {password}")
复制代码



注意:必须在同目录下创建 conftest.py 文件,将下面内容添加进去,运行脚本后,才可以正常显示中文的重命名。

def pytest_collection_modifyitems(items):    """    测试用例收集完成时,将收集到的用例名name和用例标识nodeid的中文信息显示在控制台上    """    for i in items:        i.name=i.name.encode("utf-8").decode("unicode_escape")        i._nodeid=i.nodeid.encode("utf-8").decode("unicode_escape")
复制代码



笛卡尔积

import pytest
@pytest.mark.parametrize("a",[1,2,3])@pytest.mark.parametrize("b",["你","好","啊"])@pytest.mark.parametrize("c",["a","b","c"])def test_param(a,b,c): print(f"笛卡尔积形式的参数化中 a={a},b={b},c={c}")
复制代码



原文链接:https://ceshiren.com/t/topic/24893

发布于: 刚刚阅读数: 3
用户头像

测试人

关注

专注于软件测试开发 2022-08-29 加入

霍格沃兹测试开发学社,测试人社区:https://ceshiren.com/t/topic/22284

评论

发布
暂无评论
软件测试/测试开发丨Pytest参数化用例学习笔记_程序员_测试人_InfoQ写作社区