前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Pytest 学习(二十五)- 解决pytest参数化测试标题都一样问题

Pytest 学习(二十五)- 解决pytest参数化测试标题都一样问题

作者头像
软件测试君
发布2020-12-22 11:17:35
3060
发布2020-12-22 11:17:35
举报
文章被收录于专栏:测试人生测试人生测试人生
本文共1056字 阅读约需3分钟 (后台回复“破解补丁”即可领取最新激活码)
一、前言

使用参数化测试化后,allure的报告如下显示:

源代码如下:

# -*- coding: utf-8 -*-
# @Time    : 2020/12/13 17:27
# @Author  : longrong.lang
# @FileName: test_param_title.py
# @Software: PyCharm
# @Cnblogs :https://www.cnblogs.com/longronglang
import allure
import pytest


@pytest.fixture()
def loginTo(request):
    # 传入参数,登录
    param = request.param
    print(f"\nuserName : {param['userName']} ,passWord : {param['passWord']}")
    # 登录成功,返回
    return {"code": "0", "msg": "success!"}


data = [{"userName": "jojo", "passWord": "1"},
        {"userName": "rongrong", "passWord": "1"},
        {"userName": "lilei", "passWord": "1"}
        ]


@allure.story("讲述登录成功,返回成功的故事!")
@allure.title("测试登录接口")
@pytest.mark.parametrize("loginTo", data, indirect=True)
def test_loginTo(loginTo):
    assert loginTo['msg'] == 'success!'

从源代码看出,其实就是@allure.title("测试登录接口"),写死的呀。

二、如何解决

那么怎么搞?这个问题问的好呀,动态的标题可以实现吗?必须能呀!

方案一

直接拼接loginTo 示例代码如下:

# -*- coding: utf-8 -*-
# @Time    : 2020/12/13 17:27
# @Author  : longrong.lang
# @FileName: test_param_title.py
# @Software: PyCharm
# @Cnblogs :https://www.cnblogs.com/longronglang
import allure
import pytest


@pytest.fixture()
def loginTo(request):
    # 传入参数,登录
    param = request.param
    print(f"\nuserName : {param['userName']} ,passWord : {param['passWord']}")
    # 登录成功,返回
    return {"code": "0", "msg": "success!"}


data = [{"userName": "jojo", "passWord": "1"},
        {"userName": "rongrong", "passWord": "1"},
        {"userName": "lilei", "passWord": "1"}
        ]


@allure.story("讲述登录成功,返回成功的故事!")
@allure.title("测试登录接口 {loginTo}")
@pytest.mark.parametrize("loginTo", data, indirect=True)
def test_loginTo(loginTo):
    assert loginTo['msg'] == 'success!'

allure报告

这样会使得报告,更具可读性,直观一些

方案二

使用元祖来做参数化,加一个参数为标题 示例代码如下:

# -*- coding: utf-8 -*-
# @Time    : 2020/12/13 17:27
# @Author  : longrong.lang
# @FileName: test_param_title.py
# @Software: PyCharm
# @Cnblogs :https://www.cnblogs.com/longronglang
import allure
import pytest

data = [("jojo", "1", "登录成功的用例"),
        ("rongrong", "1", "登录成功的用例"),
        ("lilei", "1", "登录失败的用例")
        ]


@allure.story("讲述登录成功,返回成功的故事!")
@allure.title("测试登录接口 {title}")
@pytest.mark.parametrize("userName,password,title", data)
def test_loginTo(userName, password, title):
    print(userName + "\t" + password + "\t" + title)

allure报告

三、这种做法的优点
  • 可以自定义各式各样的标题
  • 单独一个值去维护标题值
  • 可读性比较好,容易维护

转发到朋友圈

提醒一下你身边需要的朋友~

版权归软件测试君所有

欢迎同行转载开白

作者@糖小幽

编辑@糖小幽

图片@糖小幽

商务合作请联系微信:chandlerman

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

本文分享自 软件测试君 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、前言
  • 二、如何解决
  • 方案一
  • 方案二
  • 三、这种做法的优点
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档