一、conftest特点
二、conftest用法
conftest文件实际应用需要结合fixture来使用,fixture中参数scope也适用conftest中fixture的特性,这里再说明一下
1、fixture源码详解
fixture(scope='function',params=None,autouse=False,ids=None,name=None):
fixture里面有个scope参数可以控制fixture的作用范围,
2、fixture的作用范围
fixture里面有个scope参数可以控制fixture的作用范围:session>module>class>function
function默认模式@pytest.fixture(scope='function')
或 @pytest.fixture()
3、conftest结合fixture的使用
三、conftest应用场景
1、每个接口需共用到的token
2、每个接口需共用到的测试用例数据
3、每个接口需共用到的配置信息
四、代码实例
多个.py文件只调用1次fixture
import pytest
# conftest.py
@pytest.fixture(scope='session')
def get_token():
token = 'qeehfjejwjwjej11sss@22'
print('获取到token:%s' % token)
return token
import pytest
# test02.py
class Test(object):
def test2(self,get_token):
token = 'qeehfjejwjwjej11sss@22'
print("【执行test02.py-Test类-test2用例,获取get_token:%s】" %get_token)
assert get_token == token
if __name__=="__main__":
pytest.main(["-s","test02.py","test03.py"])
import pytest
#test03.py
class Test(object):
def test3(self,get_token):
token = 'qeehfjejwjwjej11sss@22'
print("【执行test03.py-Test类-test3用例,获取get_token:%s】" %get_token)
assert get_token == token
def test4(self,get_token):
token = 'qeehfjejwjwjej11sss@22'
print("【执行test03.py-Test类-test4用例,获取get_token:%s】" %get_token)
assert get_token == token
if __name__=="__main__":
pytest.main(["-s","test02.py","test03.py"])
"C:\Program Files\Python35\python.exe" C:/Users/wangli/PycharmProjects/Test/test/test02.py
============================= test session starts =============================
platform win32 -- Python 3.5.2, pytest-5.1.2, py-1.8.0, pluggy-0.12.0
rootdir: C:\Users\wangli\PycharmProjects\Test\test
collected 3 items
test02.py 获取到token:qeehfjejwjwjej11sss@22
【执行test02.py-Test类-test2用例,获取get_token:qeehfjejwjwjej11sss@22】
.
test03.py 【执行test03.py-Test类-test3用例,获取get_token:qeehfjejwjwjej11sss@22】
.【执行test03.py-Test类-test4用例,获取get_token:qeehfjejwjwjej11sss@22】
.
============================== 3 passed in 0.30s ==============================
Process finished with exit code 0
多个.py文件只调用多次fixture
import pytest
# conftest.py
@pytest.fixture()
def get_token():
token = 'qeehfjejwjwjej11sss@22'
print('获取到token:%s' % token)
return token
import pytest
# test02.py
class Test(object):
def test2(self,get_token):
token = 'qeehfjejwjwjej11sss@22'
print("【执行test02.py-Test类-test2用例,获取get_token:%s】" %get_token)
assert get_token == token
if __name__=="__main__":
pytest.main(["-s","test02.py","test03.py"])
import pytest
#test03.py
class Test(object):
def test3(self,get_token):
token = 'qeehfjejwjwjej11sss@22'
print("【执行test03.py-Test类-test3用例,获取get_token:%s】" %get_token)
assert get_token == token
def test4(self,get_token):
token = 'qeehfjejwjwjej11sss@22'
print("【执行test03.py-Test类-test4用例,获取get_token:%s】" %get_token)
assert get_token == token
if __name__=="__main__":
pytest.main(["-s","test02.py","test03.py"])
"C:\Program Files\Python35\python.exe" C:/Users/wangli/PycharmProjects/Test/test/test03.py
============================= test session starts =============================
platform win32 -- Python 3.5.2, pytest-5.1.2, py-1.8.0, pluggy-0.12.0
rootdir: C:\Users\wangli\PycharmProjects\Test\test
collected 3 items
test02.py 获取到token:qeehfjejwjwjej11sss@22
【执行test02.py-Test类-test2用例,获取get_token:qeehfjejwjwjej11sss@22】
.
test03.py 获取到token:qeehfjejwjwjej11sss@22
【执行test03.py-Test类-test3用例,获取get_token:qeehfjejwjwjej11sss@22】
.获取到token:qeehfjejwjwjej11sss@22
【执行test03.py-Test类-test4用例,获取get_token:qeehfjejwjwjej11sss@22】
.
============================== 3 passed in 0.04s ==============================
Process finished with exit code 0
转载于:https://blog.csdn.net/qq_36502272/article/details/102975467