Pytest 参数化

在执行自动化测试用例时,自然少不了测试数据;同一条用例逻辑,如何使用不同数据驱动测试用例?这里列举以下两种参数化方式:

方式一:
Pytest中装饰器@pytest.mark.parametrize(‘参数名’, list) ,此参数化方法支持传入单个参数或多个参数。

使用py文件存放测试数据,封装一个函数返回数据。

login_data.py

def login_data_list():
	login_data_list = [
    	{'username': '', 'password': 'xxxx', 'expect': '账号为空'},
    	{'username': 'xxxx', 'password': '', 'expect': '密码为空'},
    	{'username': 'xxxx', 'password': 'xxxxx', 'expect': '无效的用户名或密码。'},
	]
	return login_data_list

test_login.py

import pytest
from page_objects.login import Login
from data.login_data import login_data_list
from page_locators.login_page import LoginPage


@pytest.mark.parametrize('test_data', login_data_list())
@pytest.mark.usefixtures('geturl')
def test_sing_in_failed(self, browser, test_data):     
   username = login['username']
   password = login['password']
   expected = login['expect']
   
   try:
      LoginPage.user_login(browser, username, password)
      actual = LoginPage(browser).error_text()
      assert actual == expect
      
   except Exception as e:
      raise e

使用yaml存放测试数据,dict嵌套dict。(读取yaml文件的方法此处省略)

test_data.yaml

login_data1:
  username: 
  password: xxxxx

login_data2:
  username: xxxxx
  password:
@pytest.mark.parametrize('test_data', YamlUtil(os.getcwd() + '/test_data.yaml').read_yaml().values())
@pytest.mark.usefixtures('geturl')  
def test_sing_in_failed(self, browser, test_data):
    username = test_data['username']
    password = test_data['password']

    LoginPage.user_login(browser, username, password)

跟以上的方式类似,list嵌套dict。

test_data.yaml

- user: username1
  pwd: 'xxxxx'

- user: username2
  pwd: 'xxxxx'

- user: username3
  pwd: 'xxxxx'
@pytest.mark.parametrize('login', YamlUtil(os.getcwd() + '/test_data.yaml').read_yaml())
@pytest.mark.usefixtures('geturl')  
def test_sign_in_failed(self, browser, login):
    usr = login['user']
    pwd = login['pwd']
    LoginPage.user_login(browser, usr, pwd)

方式二:

@pytest.fixture(),此参数化装饰的函数可以作为参数传入其他函数;参数化装饰函数放在conftest.py,这种方式较少使用,因为
conftest.py一般用于存放测试的前置、后置条件。

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

blues_C

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值