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 bdef 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 bclass 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 bclass 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.pydef test_s1(getUsername):assert getUsername=="admin"# test_session2.pydef test_s1(getUsername):assert getUsername=="admin"# 执行命令:pytest -sv --setup-show test_session1.py test_session2.py

