1.fixture_作用范围
@pytest.fixture(scoop=”session”/“module”/“class”/“function”)中的scoop参数可以控制fixture的作用范围。
- 作用范围 : **session > module > class > function**
1.function级别
每个testcase(N个fixture)都会调用执行对应的fixture函数【N个fixture则进行N次“setup…teardown过程”】
简记 【function级别】每1个testcase,都会对引入的每个fixture函数执行一次【setup…teardown过程】# function级别:每个testcase执行的时候,fixture都会被调用
import pytest
@pytest.fixture()
def getUsername():
print("获取username")
a = "admin"
return a
@pytest.fixture(scope="function")
def getPassword():
print("获取password")
b = "123456"
return b
def test_username(getUsername):
print("当前的username:{username}".format(username=getUsername))
assert getUsername == "admin"
def test_password(getUsername, getPassword):
print("当前的password:{password}".format(password=getPassword))
assert getPassword == "123456"
2.class级别
1个“测试Class”(一个类可能有N个testcase)不管testcase使用(N个fixture),最后“每个fixture只会执行一次【“setup…teardown过程”】”
简记 【Class级别】每1个类,只会对每个fixture函数执行一次【setup…teardown过程】#此脚本的主要功能 :fixture(scoop="class")
import pytest
@pytest.fixture(scope="class")
def getUsername():
print("获取username")
a = "admin"
return a
@pytest.fixture(scope="class")
def getPassword():
print("获取password")
b = "123456"
return b
class Test01():# 每1个类,只会对每个fixture函数执行一次【setup...teardown过程】
def test_username1(self,getUsername):
print("当前的username:{username}".format(username=getUsername))
assert getUsername == "admin"
def test_username2(self,getUsername):
print("当前的username:{username}".format(username=getUsername))
assert getUsername == "admin"
def test_password(self,getUsername, getPassword):
print("当前的password:{password}".format(password=getPassword))
assert getPassword == "123456"
class Test02():每1个类,只会对每个fixture函数执行一次【setup...teardown过程】
def test_username1(self,getUsername):
print("当前的username:{username}".format(username=getUsername))
assert getUsername == "admin"
# def test_username2(self,getUsername):
# print("当前的username:{username}".format(username=getUsername))
# assert getUsername == "admin"
def test_password(self,getUsername, getPassword):
print("当前的password:{password}".format(password=getPassword))
assert getPassword == "123456"
3.module级别
每1个测试文件(test_xx.py),只会对每个fixture函数执行一次【setup…teardown过程】
简记 【Module级别】每1个测试文件(test_xx.py),只会对每个fixture函数执行一次【setup…teardown过程】#此脚本的主要功能 :fixture(scoop="module")
import pytest
@pytest.fixture(scope="module")
def getUsername():
print("获取username")
a = "admin"
return a
@pytest.fixture(scope="module")
def getPassword():
print("获取password")
b = "123456"
return b
class Test01():# 每1个测试文件(test_xx.py),只会对每个fixture函数执行一次【setup...teardown过程】
def test_username1(self,getUsername):
print("当前的username:{username}".format(username=getUsername))
assert getUsername == "admin"
# def test_username2(self,getUsername):
# print("当前的username:{username}".format(username=getUsername))
# assert getUsername == "admin"
def test_password(self,getUsername, getPassword):
print("当前的password:{password}".format(password=getPassword))
assert getPassword == "123456"
class Test02(): # 每1个测试文件(test_xx.py),只会对每个fixture函数执行一次【setup...teardown过程】
def test_username1(self,getUsername):
print("当前的username:{username}".format(username=getUsername))
assert getUsername == "admin"
# def test_username2(self,getUsername):
# print("当前的username:{username}".format(username=getUsername))
# assert getUsername == "admin"
def test_password(self,getUsername, getPassword):
print("当前的password:{password}".format(password=getPassword))
assert getPassword == "123456"
4.session级别
session是运行多个测试文件(test_xx.py),其中的fixture函数只会执行一次“setup…teardwon过程”# conftest.py
@pytest.fixture(scope="session")
def getUsername():
print("获取username")
a = "admin"
return a
#----------------
# test_session1.py
def test_s1(getUsername):
assert getUsername=="admin"
# test_session2.py
def test_s1(getUsername):
assert getUsername=="admin"
# 执行命令:pytest -sv --setup-show test_session1.py test_session2.py