@pytest.fixture(scope="function", params=None, autouse=False, ids=None, name=None) def test(): print("fixture初始化的参数列表")
session的作用域:是整个测试会话,即开始执行pytest到结束测试
import pytest
# 调用方式1
@pytest.fixture
def login():
print(‘login输入账号密码‘)
def test_F(login):
print(‘用例1登录‘)
def test_S():
print(‘用例2不登录‘)
# 调用方式2
@pytest.fixture
def login2():
print(‘login2输入账号密码‘)
@pytest.mark.usefixtures(‘login‘,‘login2‘)
def test_T():
print(‘用例3登录‘)
@pytest.fixture(autouse=True)
def quanzhixing():
print(‘都给老子执行‘)
import pytest order = [] @pytest.fixture(scope="session") def s1(): order.append("s1") @pytest.fixture(scope="module") def m1(): order.append("m1") @pytest.fixture def f1(f3, a1): # 先实例化f3, 再实例化a1, 最后实例化f1 order.append("f1") assert f3 == 123 @pytest.fixture def f3(): order.append("f3") a = 123 yield a @pytest.fixture def a1(): order.append("a1") @pytest.fixture def f2(): order.append("f2") def test_order(f1, m1, f2, s1): # m1、s1在f1后,但因为scope范围大,所以会优先实例化 assert order == ["s1", "m1", "f3", "a1", "f1", "f2"]
断言成功
前面讲的,其实都是setup的操作,那么现在就来讲下teardown是怎么实现的
用fixture实现teardown并不是一个独立的函数,而是用 yield 关键字来开启teardown操作
import pytest @pytest.fixture(scope="session") def open(): # 会话前置操作setup print("===打开浏览器===") test = "测试变量是否返回" yield test # 会话后置操作teardown print("==关闭浏览器==") @pytest.fixture def login(open): # 方法级别前置操作setup print(f"输入账号,密码先登录{open}") name = "==我是账号==" pwd = "==我是密码==" age = "==我是年龄==" # 返回变量 yield name, pwd, age # 方法级别后置操作teardown print("登录成功") def test_s1(login): print("==用例1==") # 返回的是一个元组 print(login) # 分别赋值给不同变量 name, pwd, age = login print(name, pwd, age) assert "账号" in name assert "密码" in pwd assert "年龄" in age def test_s2(login): print("==用例2==") print(login)
原文:https://www.cnblogs.com/lhTest/p/15055391.html