Pytest框架学习10--setup预置条件函数传参
@pytest.fixture装饰器用来做测试用例的预置条件,相当于unittest中的setup函数,如果要在预置条件中传参数,该如何进行呢?1.传参就用默认的request参数2.接收参数用request.param#!usr/bin/python# -*- coding: utf-8 -*-import pytest@pytest.fixture(scope="modul...
·
@pytest.fixture装饰器用来做测试用例的预置条件,相当于unittest中的setup函数,如果要在预置条件中传参数,该如何进行呢?
1.传参就用默认的request参数
2.接收参数用request.param
#!usr/bin/python
# -*- coding: utf-8 -*-
import pytest
@pytest.fixture(scope="module")
def login(request):
username=request.param #从request中取传递过来的参数
print(username)
return username
test_data=["username1","username2"]
@pytest.mark.parametrize("login",test_data,indirect=True)添加indirect=True参数是为了把login当成一个函数去执行,而不是一个参数
def test_login(login):
a = login 返回值接收
print(a)
assert a
传递多个参数:接收到的参数时一个字典,可以用request,param[’username‘]形式接收
@pytest.fixture(scope="module")
def login2(request):
username=request.param["username"]
pwd=request.param["password"]
print(username)
print(pwd)
return username,pwd
test_data=[{"username":"username1","password":"123"},{"username":"username2","password":"456"}]#参数填写成字典形式
@pytest.mark.parametrize("login2",test_data,indirect=True)
def test_login2(login2):
a = login2
print(a)
assert a
fixture叠加:
import pytest
# 测试账号数据
test_user = ["admin1", "admin2"]
test_psw = ["11111", "22222"]
@pytest.fixture(scope="module")
def input_user(request):
user = request.param
print("登录账户:%s" % user)
return user
@pytest.fixture(scope="module")
def input_psw(request):
psw = request.param
print("登录密码:%s" % psw)
return psw
@pytest.mark.parametrize("input_user", test_user, indirect=True)
@pytest.mark.parametrize("input_psw", test_psw, indirect=True)
def test_login(input_user, input_psw):
'''登录用例'''
a = input_user
b = input_psw
print("测试数据a-> %s, b-> %s" % (a,b))
assert b
if __name__ == "__main__":
pytest.main(["-s", "test_04.py"])
运行结果
============================= test session starts =============================
platform win32 -- Python 3.6.0, pytest-3.6.3, py-1.5.4, pluggy-0.6.0
rootdir: E:\YOYO\par, inifile:
plugins: metadata-1.7.0, html-1.19.0
collected 4 items
test_04.py 登录账户:admin1
登录密码:11111
测试数据a-> admin1, b-> 11111
.登录账户:admin2
测试数据a-> admin2, b-> 11111
.登录密码:22222
测试数据a-> admin2, b-> 22222
.登录账户:admin1
测试数据a-> admin1, b-> 22222
.
========================== 4 passed in 0.05 seconds ===========================
更多推荐
已为社区贡献26条内容
所有评论(0)