美文网首页
python测试框架:pytest如何实现数据传参

python测试框架:pytest如何实现数据传参

作者: 闲酿星河 | 来源:发表于2021-11-04 21:11 被阅读0次

本文主要介绍pytest的两种传参方式:
@pytest.mark.parametrize@pytest.fixture

  • @pytest.mark.parametrize
    通过在函数上方加上@pytest.mark.parametrize(参数,参数值)实现,使用时通过定义的参数取值。

参数与参数值一一对应

# test_login.py


import pytest

data1 = [('demo1', 'hello'), ('demo2', 'world')]


@pytest.mark.parametrize("name,password", data1)
def test_demo(name, password):
    print(name, password)


if __name__ == '__main__':
    pytest.main(['-s', 'test_login.py'])

>>>执行结果
demo1 hello
.demo2 world

只有一个参数接收数据

import pytest

data1 = [('demo1', 'hello'), ('demo2', 'world')]

# 只有一个参数接收数据
@pytest.mark.parametrize("login", data1)
def test_demo(login):
    print(login)


if __name__ == '__main__':
    pytest.main(['-s', 'test_login.py'])

>>>执行结果
('demo1', 'hello')
.('demo2', 'world')

装饰多个时,参数相乘。

# test_login.py

import pytest

data1 = ['demo1', 'demo2']
data2 = ['hello', 'world']

@pytest.mark.parametrize("name1", data1)
@pytest.mark.parametrize("name2", data2)
def test_demo(name1, name2):
    print(name1, name2)

if __name__ == '__main__':
    pytest.main(['-s', 'test_login.py'])

>>>执行结过
demo1 hello
.demo2 hello
.demo1 world
.demo2 world
  • @pytest.fixture
    通过在函数上方加上@pytest.fixture()实现,使用时通过request用字典的方式取值。
# test_01.py
import pytest
test_user_data = [{"user":"admin1"}, {"user":"admin2"}]


@pytest.fixture(params=test_user_data)
def login(request):
    user = request.param
    print("登录账户:%s"%user['user'])
    return user
def test_login(login):
    login


if __name__ == "__main__":
    pytest.main(["-s", "test_01.py"])

>>>执行结果
登录账户:admin1
.登录账户:admin2

request接收参数, indirect=True 声明login是函数

import pytest
test_user_data = [{"user":"admin1"}, {"user":"admin2"}]


@pytest.fixture()
def login(request):
    user = request.param
    print("登录账户:%s"%user['user'])
    return user


# indirect=True 声明login是函数
@pytest.mark.parametrize("login", test_user_data, indirect=True)
def test_login(login):
    a = login
    print(a)


if __name__ == "__main__":
    pytest.main(["-s", "test.py"])

>>>执行结果
登录账户:admin1
{'user': 'admin1'}
.登录账户:admin2
{'user': 'admin2'}

相关文章

网友评论

      本文标题:python测试框架:pytest如何实现数据传参

      本文链接:https://www.haomeiwen.com/subject/uagkzltx.html