配置文件:
配置文件一般存在项目的根目录下,官方文档介绍了四种配置文件,每种文件有各自的用处。
pytest.ini:主配置文件,最常用,优先匹配配置项
tox.ini :可以理解为pytest.ini的另一种写法,二者选择使用其一即可
setup.cfg
conftest.py:本地的插件库,主要用于存放fixture,其中的hook函数和fixture将作用于该文件所在的目录以及所有子目录
我们只重点学习pytest.ini和conftest.py
1、conftest.py文件特点
- 所有同目录测试文件运行前都会执行conftest.py文件,文件名字是固定不可改变, 不需要import导入
- pytest用例会自动识别conftest.py文件,放到项目的根目录下就可以全局目录调用了,如果放到某个package下,那就在该package内有效,并且该包中有__init__.py文件
- conftest.py文件是单独存放的一个夹具(Fixture)配置文件,通常
conftest.py
和@pytest.fixture()
结合使用 - 可以跨.py文件调用,有多个.py文件调用时,可让conftest.py只调用了一次fixture,或调用多次fixture
2、优先级问题
fixture的session优先级最高
fixture的class级别高于setup_class,也就是先执行fixture的scope="class"代码
fixture的function级别高于setup,即先执行fixture的scope="function"代码
3、案例
conftest.py文件
import pytest @pytest.fixture(scope='function',autouse="autouse") def login1(): print("打印conftest配置文件下scope='function'内容") return 1234 # print("打印yield返回文件") @pytest.fixture(scope="session",autouse="autouse") def logi2(): print("打印conftest配置文件下的scope='session'内容") @pytest.fixture() def add(): print("这是conftest配置文件add")
testthree.py文件
class TestThree: def setup(self): print("执行测试用例setup开始") def teardown(self): print("执行测试teardown结束") def setup_class(self): print("行测试模类中执行一次开始setup_class") def teardown_class(self): print("执行测试类中执行结束一次teardown_class") def test_one(self,add): print("执行测测试用例test_one") return 123 def test_two(self): print("执行测试用例two") assert 4 + 5 == 9 def test_add(self): print("执行测试用例test_add")
输入结果: