0
点赞
收藏
分享

微信扫一扫

Pytest全局用例共用之conftest.py详解

前程有光 2021-09-19 阅读 86
WEB测试

一、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

举报

相关推荐

0 条评论