首页 > 其他分享 >PlayWright(十七)- 参数化

PlayWright(十七)- 参数化

时间:2023-07-14 16:44:37浏览次数:34  
标签:十七 PlayWright 数据 json pytest 参数 data 我们

今天来讲下参数化,具体是什么意思呢,举个例子   比如我们要测试登录功能,第一步会填写账号,第二步会填写密码,这是一条完整的操作,但是其中会有很多条用例比如账号错误、密码错误、账号为空、密码为空的各种情况,但是在输入账号、密码的操作都是一样的   我们不能一条用例复制很多次,然后再输入不同的情况,所以就用到了我们的参数化,只需要写一个用例操作,然后把全部需要的参数传入用例操作中,只需要不同数据就可以实现不同的情况,所以我们也经常叫这种为数据驱动    

1、参数化怎么用

那Pytest使用参数化功能使用的是什么呢? 答:是一个装饰器  
@pytest.mark.parametrize(self,argnams,argvalues,indirect=False,ids=None)
  分析下参数
  • argnams 参数名,是一个字符串,若有多个参数中间用逗号分隔
  • argvalue 参数值,是一个列表,列表中有几个元素,便会生成几个用例
  • indirect 默认为False,若为True则表示参数名是一个函数
  • ids 可以将用例重命名
大概意思就是第一个参数填一个字符串,第二个参数填一个列表,列表里放参数   好,我们还是直接实战。  

2、传一个参数

 

import pytest
"""
参数化的使用
"""
@pytest.mark.parametrize('num', [1, 2, 3, 4, 5])
def test_01(num):
    print(f"传入的参数是:{num}")

 

我们定义函数,这里得主要有参数,所以必须在函数里先传入这个参数,之后才能使用,列表里放我们的参数[1,2,3,4,5],所以结果应该也是分别传入这几个数 运行结果:  

2、传多个参数

@pytest.mark.parametrize('a,b,c', [(1, 2, 3), (4, 5, 6)])
def test_01(a, b, c):
    print(f"传入的参数分别是:{a},{b},{c}")

 

这里我们传入了多个参数,用了列表包着元祖的形式传入参数 运行结果: 那有人会问,列表包着元祖可以,那列表包着字典不能使用吗?我们试一下就知道了
@pytest.mark.parametrize('a,b,c', [{1, 2, 3}, {4, 5, 6}])
def test_01(a, b, c):
    print(f"传入的参数分别是:{a},{b},{c}")

 

看结果:   可以看到,是没有问题的,我们之后做数据驱动经常会用到此种数据  

3、数据驱动

多个参数也没问题了,那很多很多数据呢,我们在接着放到参数里就会太长了,代码很不优雅,所以我们选用单独文件存储数据,这个文件形式呢?有yaml格式、json格式、excel格式,这些我们都可以用,然后我们选用读取文件数据的方式,然后再放在参数里就可以了   这样代码还更简洁了,如果要更换数据,直接在对应的数据文件里更换数据就可以了   下边直接看例子:   数据放到了JSON文件里   这时候就需要我们读取用例了,这里可以单独写一个函数  
json_file = '具体的json文件路径'   # 这里我们填写json的绝对路径

def get_data():
   """
   封装处理json数据的
   """
    test_data = []      # 先定义一个数据存储器,读取的数据要往这里填
    
    # 打开文件加载
    with open(json_file, encoding="utf-8") as f:   # 打开json文件夹
        case = json.load(f)    # 将JSON字符串转换为字典存放到case中

    for case_data in case.values(): # 将数据循环拆开,变成元祖格式在放到我们之前的容器中
        test_data.append(tuple(case_data.values()))
   
    return test_data

 

这是我们的数据处理,调用这个函数就返回数据了,我们可以先看结果,数据对不对   执行结果:   好了,我们可以在函数中使用了
import pytest
# 导入了处理数据的文件,方便之后调用函数
from tools.get_data import get_data

@pytest.mark.parametrize("name,age", get_data())
def test01(name, age):
    print(f"传入的参数分别是:{name},{age}")

 

我们直接在第二个参数中放我们的处理数据函数 执行结果:   没有问题,参数化我们基本已经掌握了

标签:十七,PlayWright,数据,json,pytest,参数,data,我们
From: https://www.cnblogs.com/nuomituan/p/17554132.html

相关文章

  • ASEMI快恢复二极管MUR2080CT参数, MUR2080CT规格
    编辑-ZMUR2080CT参数描述:型号:MUR2080CT最大峰值反向电压(VRRM):800V最大RMS电压(VRMS):430V最大直流阻断电压VR(DC):800V平均整流正向电流(IF):20A非重复峰值浪涌电流(IFSM):150A工作接点温度和储存温度(TJ,Tstg):-55to+150℃最大热阻(RθJC):3℃/W正向电压(VF):2V最大瞬时......
  • ASEMI快恢复二极管MUR2080CTR资料,MUR2080CTR参数
    编辑-ZMUR2080CTR是一种高压、超快恢复整流二极管。它通常用于各种电子应用,如电源、逆变器和电机控制电路。该二极管设计用于处理高压和高频开关,适用于需要快速高效整流的应用。 MUR2080CTR二极管的一个关键特性是其超快的恢复时间。这意味着它可以非常快地从导通状态切换到非......
  • 《最新出炉》系列入门篇-Python+Playwright自动化测试-7-浏览器的相关操作
    1.简介上一篇已经将playwright的元素定位大法基本介绍的差不多了,但是在Web的UI自动化的测试中,我们通常需要使用一些方法来操作浏览器,今天就跟随学习了解一下。这一篇宏哥主要是介绍一下,在自动化测试的时候,我们常见的一些浏览器操作有哪些,宏哥将会一一介绍和讲解。2.层级在介绍......
  • jQuery $.post 传对象参数
    使用jQuery$.post传递对象参数的步骤如果要使用jQuery的$.post方法来传递对象参数,需要按照以下步骤进行操作:步骤描述1创建一个包含对象参数的JavaScript对象2将对象参数转换为JSON字符串3使用$.post方法发送POST请求4在后端服务器中解析接......
  • BOSHIDA DC电源模块输出电压的关键参数详细说明
    BOSHIDADC电源模块输出电压的关键参数详细说明DC电源模块是一种直流电源设备,广泛应用于各种电子设备的供电系统中。DC电源模块的输出电压是其中一个非常关键的参数,对于电子设备的性能和稳定性都有着重要的影响。以下将详细描述DC电源模块输出电压的关键参数。输出电压的稳定性......
  • PlayWright(十六)- Pytest断言
    我们在写自动化测试的时候,得到测试结果之后,现在要开始拿实际结果与期望结果做对比了 那如果是测试1个结果,我们可以用肉眼比对,如果是百十来个用例结果,我们肉眼就看不过来了,所以我们需要断言,而在Pytest中也有断言,而且Pytest的断言使用的是Python自带的,所以使用起来很方便 使......
  • 多个参数校验代码
    List<String>nullParams=Stream.of(StringUtils.isBlank(client)?"client":null,StringUtils.isBlank(redirect)?"redirect":null,......
  • java单元测试入参数不同出参不同怎么做
    项目方案-Java单元测试入参不同出参不同的处理背景和问题在软件开发过程中,我们经常需要编写单元测试来保证代码的正确性。但是,在某些情况下,相同的测试方法可能会根据不同的输入参数而产生不同的输出结果。这给单元测试的编写带来了一定的挑战,因为我们需要针对不同的参数情况编......
  • java函数默认参数
    实现Java函数默认参数的步骤为了实现Java函数的默认参数,我们需要按照以下步骤进行操作。在下面的表格中,我将详细列出每个步骤所需做的事情,并提供代码示例和注释来解释其意义。步骤操作代码示例说明1创建一个函数publicvoidmyFunction(Stringparam1,intparam2)......
  • java过滤器塞不进去参数原因
    Java过滤器塞不进去参数原因解决方法作为一名经验丰富的开发者,我将为你解释在Java中为什么过滤器无法将参数传递,并提供解决方法。首先,让我们看一下整个过程的步骤:步骤操作1在Web.xml中配置过滤器2创建过滤器类3在过滤器类中获取和处理参数步骤1:在Web.xml中......