iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >pytest实现测试用例参数化
  • 660
分享到

pytest实现测试用例参数化

2024-04-02 19:04:59 660人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

背景 本文总结pytest的测试用例参数化。 说明 软件测试中,输入相应值,检查期望值,是常见测试方法。 在自动化测试中,一个测试用例对应一个测试点,通常一组测试数据无法完全覆盖

背景

本文总结pytest的测试用例参数化。

说明

软件测试中,输入相应值,检查期望值,是常见测试方法。
自动化测试中,一个测试用例对应一个测试点,通常一组测试数据无法完全覆盖测试范围,所以,需要参数化来传递多组数据。

pytest的测试用例参数化使用如下装饰器即可完成。


@pytest.mark.parametrize(argnames, argvalues)
# 参数:
# argnames:以逗号分隔的字符串
# argvaluse: 参数值列表,若有多个参数,一组参数以元组形式存在,包含多组参数的所有参数
# 以元组列表形式存在

示例:

参数化之一个参数。


# ./test_case/test_func.py
import pytest

@pytest.mark.parametrize("arg_1", [4399, 2012])
def test_add_by_func_aaa(arg_1):
 print(arg_1)
 
# ./run_test.py
import pytest

if __name__ == '__main__':
 pytest.main(['-v','-s'])
 
'''
============================= test session starts =============================
platfORM win32 -- python 3.7.0, pytest-5.3.4, py-1.8.1, pluggy-0.13.1 -- D:\python3.7\Python.exe
cachedir: .pytest_cache
rootdir: D:\Python3.7\project\pytest, inifile: pytest.ini
plugins: allure-pytest-2.8.9, rerunfailures-8.0
collecting ... collected 2 items

test_case/test_func.py::test_add_by_func_aaa[4399] 4399
PASSED
test_case/test_func.py::test_add_by_func_aaa[2012] 2012
PASSED

============================== 2 passed in 0.04s ==============================
[Finished in 1.3s]
''' 

参数化之多个参数。


# ./test_case/test_func.py
import pytest  

@pytest.mark.parametrize("arg_1, arg_2", [(4399, 'AAAA'), (2012, 'BBBB')])
def test_add_by_func_aaa(arg_1,arg_2):
 print("arg_1:{}  arg_2:{}".format(arg_1, arg_2))

# ./run_test.py
import pytest

if __name__ == '__main__':
 pytest.main(['-v','-s'])
 
'''
============================= test session starts =============================
platform win32 -- Python 3.7.0, pytest-5.3.4, py-1.8.1, pluggy-0.13.1 -- D:\Python3.7\python.exe
cachedir: .pytest_cache
rootdir: D:\Python3.7\project\pytest, inifile: pytest.ini
plugins: allure-pytest-2.8.9, rerunfailures-8.0
collecting ... collected 2 items

test_case/test_func.py::test_add_by_func_aaa[4399-AAAA] arg_1:4399  arg_2:AAAA
PASSED
test_case/test_func.py::test_add_by_func_aaa[2012-BBBB] arg_1:2012  arg_2:BBBB
PASSED

============================== 2 passed in 0.05s ==============================
[Finished in 1.3s]
'''  

以上第2个示例,展现的是一个测试用例有两个参数,然后参数化了两组数据。

但在实际测试中,有的场景,比如多条件查询,比如有2个查询条件,每个条件有3个选项,如果要全部覆盖,则是3*3==9种情况。这种情景,人工测试一般是不会全部覆盖的,但在自动化测试中,只要你想,就可以做到。如下示例:

如下格式参数化,其测试结果为所有参数选项数量的乘积。


# ./test_case/test_func.py
import pytest
from func import *

'''
class TestFunc:

 # 正常测试用例
 def test_add_by_class(self):
  assert add(2,3) == 5


 def test_add_by_class_11(self):
  assert add(2,3) == 5
'''  

@pytest.mark.parametrize("arg_1", [4399,  2012, 1997])
@pytest.mark.parametrize("arg_2", ['AAAA', 'BBBB', 'CCCC'])
def test_add_by_func_aaa(arg_1,arg_2):
 print("arg_1:{}  arg_2:{}".format(arg_1, arg_2))
 

# ./run_test.py
import pytest

if __name__ == '__main__':
 pytest.main(['-v','-s'])
  
 
'''
============================= test session starts =============================
platform win32 -- Python 3.7.0, pytest-5.3.4, py-1.8.1, pluggy-0.13.1 -- D:\Python3.7\python.exe
cachedir: .pytest_cache
rootdir: D:\Python3.7\project\pytest, inifile: pytest.ini
plugins: allure-pytest-2.8.9, rerunfailures-8.0
collecting ... collected 9 items

test_case/test_func.py::test_add_by_func_aaa[AAAA-4399] arg_1:4399  arg_2:AAAA
PASSED
test_case/test_func.py::test_add_by_func_aaa[AAAA-2012] arg_1:2012  arg_2:AAAA
PASSED
test_case/test_func.py::test_add_by_func_aaa[AAAA-1997] arg_1:1997  arg_2:AAAA
PASSED
test_case/test_func.py::test_add_by_func_aaa[BBBB-4399] arg_1:4399  arg_2:BBBB
PASSED
test_case/test_func.py::test_add_by_func_aaa[BBBB-2012] arg_1:2012  arg_2:BBBB
PASSED
test_case/test_func.py::test_add_by_func_aaa[BBBB-1997] arg_1:1997  arg_2:BBBB
PASSED
test_case/test_func.py::test_add_by_func_aaa[CCCC-4399] arg_1:4399  arg_2:CCCC
PASSED
test_case/test_func.py::test_add_by_func_aaa[CCCC-2012] arg_1:2012  arg_2:CCCC
PASSED
test_case/test_func.py::test_add_by_func_aaa[CCCC-1997] arg_1:1997  arg_2:CCCC
PASSED

============================== 9 passed in 0.06s ==============================
[Finished in 1.4s]
'''

总结

以上,就是我们测试中使用的pytest测试用例参数化。

当然,如实际需要,你也可以把测试数据独立到文件里。然后读取出来,传递给@pytest.mark.parametrize(argnames, argvalues)装饰器

到此这篇关于pytest实现测试用例参数化的文章就介绍到这了,更多相关pytest 测试用例参数化内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: pytest实现测试用例参数化

本文链接: https://www.lsjlt.com/news/123743.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • pytest实现测试用例参数化
    背景 本文总结pytest的测试用例参数化。 说明 软件测试中,输入相应值,检查期望值,是常见测试方法。 在自动化测试中,一个测试用例对应一个测试点,通常一组测试数据无法完全覆盖...
    99+
    2022-11-12
  • pytest如何实现测试用例参数化
    小编给大家分享一下pytest如何实现测试用例参数化,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!说明软件测试中,输入相应值,检查期望值,是常见测试方法。在自动化...
    99+
    2023-06-14
  • pytest fixtures函数及测试函数的参数化实例分析
    这篇文章主要介绍“pytest fixtures函数及测试函数的参数化实例分析”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“pytest fixtures函数及测试函数的参数化实...
    99+
    2023-06-30
  • pytest fixtures函数及测试函数的参数化解读
    目录pytest fixtures测试函数参数化一、@pytest.mark.parametrize:参数化测试函数1. 常规用法2. 在参数化中标记单个测试实例3. 多个参数化组合...
    99+
    2022-11-11
  • Python的pytest参数化实例分析
    今天小编给大家分享一下Python的pytest参数化实例分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。源代码分析def...
    99+
    2023-06-26
  • pytest使用@pytest.mark.parametrize()实现参数化的示例代码
    目录1.方法详情:2.使用方法2.1.一个列表中一个参数多个值2.2.多参数多值2.3.多个参数混合使用2.4.传入字典数据1.方法详情: parametrize(argnames,...
    99+
    2022-11-11
  • JUnit5中的参数化测试实现
    目录参数化测试的基本概念使用不同类型的参数使用自定义的参数参数化测试的高级用法结论JUnit是Java中最受欢迎的测试框架之一。JUnit 5是JUnit的最新版本,它引入了许多新功...
    99+
    2023-05-20
    JUnit5 参数化测试 JUnit 参数化测试
  • pytest怎么使用@pytest.mark.parametrize()实现参数化
    这篇文章主要介绍了pytest怎么使用@pytest.mark.parametrize()实现参数化的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇pytest怎么使用@pytest.mark.parametri...
    99+
    2023-07-02
  • pytest如何使用@pytest.mark.parametrize()实现参数化
    这篇文章主要介绍“pytest如何使用@pytest.mark.parametrize()实现参数化”,在日常操作中,相信很多人在pytest如何使用@pytest.mark.parametrize()实现...
    99+
    2022-10-19
  • pytest接口测试之fixture传参数request的使用
    目录前言 一、函数传参 request参数 request传两个参数 前言 有的测试用例,需要依赖于某些特定的case才可以执行,比如登录获取到token,后面的请求都需要带着,为...
    99+
    2022-11-12
  • Pytest+Yaml+Excel 接口自动化测试框架的实现示例
    目录一、框架架构二、项目目录结构三、框架功能说明四、核心逻辑说明配置文件输出目录请求工具类代码编写case程序主入口执行记录一、框架架构 二、项目目录结构 三、框架功能说明 解决...
    99+
    2022-11-13
  • Python中怎样实现参数化测试
    Python中怎样实现参数化测试,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1、什么是参数化测试?对于普通测试来说,一个测试方法只需要运行一遍,而参数化测试对于一个测试方法,...
    99+
    2023-06-16
  • python+pytest自动化测试封装怎么实现
    本篇内容介绍了“python+pytest自动化测试封装怎么实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!例如单个接口的请求代码如下:i...
    99+
    2023-07-02
  • pytest自动化测试fixture的作用域实例化顺序及可用性
    目录1. fixture的作用域1.1 scope1.function:2.class:3.module:4.package:5.session:1.2 动态作用域(Dynamic ...
    99+
    2022-11-12
  • 怎么用Python+Pytest实现压力测试
    这篇“怎么用Python+Pytest实现压力测试”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“怎么用Python+Pyte...
    99+
    2023-07-05
  • python+playwright+pytest+allure+pom+yaml实现UI自动化测试
    一. 演示项目源码 https://gitee.com/giteetangll/playwright-demo 二、UI自动化分层设计 Auth:登录认证保存后的认证信息 BasePage:封装pl...
    99+
    2023-09-10
    python pytest 开发语言
  • 测试驱动技术系列之怎么用pytest实现测试数据驱动
    本篇内容主要讲解“测试驱动技术系列之怎么用pytest实现测试数据驱动”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“测试驱动技术系列之怎么用pytest实现测试数据驱动”吧!一组参数化数据定义参...
    99+
    2023-06-15
  • pytest用例间参数传递的两种实现方式示例
    目录前言一、通过conftest创建全局变量二、使用tmpdir_factory方法总结前言 我们在做接口自动化测试的时候,会经常遇到这种场景:接口A的返回结果中的某个字段,是接口B...
    99+
    2022-11-12
  • Python+Requests+PyTest+Excel+Allure接口自动化测试怎么实现
    本篇内容主要讲解“Python+Requests+PyTest+Excel+Allure接口自动化测试怎么实现”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python+Requests+PyT...
    99+
    2023-07-05
  • python+pytest接口自动化参数关联怎么实现
    这篇文章主要介绍了python+pytest接口自动化参数关联怎么实现的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇python+pytest接口自动化参数关联怎么实现文章都会有所收获,下面我们一起来看看吧。一...
    99+
    2023-07-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作