pytest参数化结合allure.title()生成自定义用例描述

4 篇文章 0 订阅
4 篇文章 0 订阅

参数化(parametrize)可以实现测试数据和测试脚本完全分离,便于测试的维护和扩展

如何在测试报告中展示参数化的用例:

  • pytest可以在参数化的时候加 ids 参数对每个用例说明使用场景
  • allure.title() 可以接收测试数据中的参数对每个用例说明使用场景,用例说明可以同测试维护在一起,数据可以一次性读取,更加方便
  • allure.dynamic.title() 可以在用例里面使用,作用同allure.title()

测试脚本

  • 新增测试文件:test_parametrize.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @File  : test_parametrize.py
# @Author: xxxx xxxx
# @Date  : 2021/10/9 23:38
# @Desc  :

import pytest
import allure


def login(username, password):
    """登录功能"""
    print("输入账号:%s" % username)
    print("输入密码:%s" % password)
    # 返回
    return {"code": 0, "msg": "success!"}


# 测试数据
# 从excel 或者 mysql 中获取
test_data = [
    ({"username": "user1", "password": "123456"}, "success!", "输入正确账号,密码,登录成功"),
    ({"username": "user2", "password": "123456"}, "failed!", "输入错误账号,密码,登录失败"),
    ({"username": "user3", "password": "123456"}, "success!", "输入正确账号,密码,登录成功"),
]


@allure.story("登录用例")
@allure.title("{title}")
@pytest.mark.parametrize("test_input,expected,title",
                         test_data
                         )
def test_login(test_input, expected, title):
    """
     # 登录测试用例
     # 测试用例的参数 比待测试功能的参数 多一个{title}
     # 参数化时传 3个参数@pytest.mark.parametrize "test_input,expected,title"
     # @allure.title("{title}") 的参数写法 "{title}"
    """
    # 获取函数返回结果
    result = login(test_input["username"], test_input["password"])
    # 断言
    assert result["msg"] == expected


# @allure.story("登录用例")
# @pytest.mark.parametrize("test_input,expected,title",
#                          test_data
#                          )
# def test_login(test_input, expected, title):
#     """
#      # 登录测试用例
#      # 测试用例的参数 比待测试功能的参数 多一个{title}
#      # 参数化时传 3个参数@pytest.mark.parametrize "test_input,expected,title"
#      # allure.dynamic.title(title)  # 更符合平时使用习惯
		# 其他动态生成的属性
#       #allure.dynamic.feature
		#allure.dynamic.link
		#allure.dynamic.issue
		#allure.dynamic.testcase
		#allure.dynamic.story
		#allure.dynamic.title
		#allure.dynamic.description
#     """
#     # 获取函数返回结果
#     result = login(test_input["username"], test_input["password"])
#     # 断言
#     assert result["msg"] == expected
#     allure.dynamic.title(title)

运行用例

  • 在terminal通过如下命令运行用例:
$ pytest test_parametrize.py --alluredir ./report/allure_report  --clean-alluredir
$ allure serve ./report/allure_report

测试报告

在这里插入图片描述

参考文档:https://www.cnblogs.com/yoyoketang/p/12853605.html

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值