01
—
引言
conftest.py是pytest特有的本地测试配置,既可以用来设置项目级别的Fixture、也可以用来导入外部插件,还可以用来指定钩子函数(后续慢慢总结)
一个project下可以有多个conftest.py的文件,根目录下放一个会起到全局作用,根目录下所有的目录都可以使用,在不同都测试目录下也可以有自己单独都conftest.py,作用范围只在该层级及以下目录生效。
02
—
运用
简单都运用场景,在写case时,每一个模块里面都用例都需要进行登
录or每个模块都用例都要有一些前置操作,该怎么实现,这时候conftest.py文件就可以起到非常大都作用。
'''目录层级'''
conftest(是一个package,包名叫conftest,包名任取)
__ conftest.py
__ test_01.py
__ test_02.py
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# @Time : 2021/4/6 10:39 下午
# @Author : Maynard
# @File : conftest.py
# @Software: PyCharm
import pytest
@pytest.fixture()
def login():
print('-----conftest文件login方法开始执行-----')
print('login in confest.py')
print('-----conftest文件login方法执行结束-----')
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# @Time : 2021/4/6 10:46 下午
# @Author : Maynard
# @File : test_01.py
# @Software: PyCharm
import pytest
def test_01(login):
print('-----test_01case开始执行-----')
print('执行ing')
print('-----test_01case执行结束-----')
if __name__ == '__main__':
pytest.main(['-s','test_01.py'])
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# @Time : 2021/4/6 10:48 下午
# @Author : Maynard
# @File : test_02.py
# @Software: PyCharm
def test_02(login):
print('-----test_02case开始执行-----')
print('执行ing')
print('-----test_02case执行结束-----')
03
—
运行结果
直接使用命令行运行 pytest -s conftest即可
pytest -s conftest
'''运行conftest路径下所有的用例'''
结果:每个case执行前,都会先执行conftest里面都login方法;
04
—
总结
conftest.py文件名是固定的,不能更改文件名;
可以在不同的py文件中使用同一个fixture函数;
使用conftest里面函数时,不需要做任何import导入操作;
在实际项目过程中,conftest一般会结合fixture使用,下一篇介绍结合使用;
所有同目录测试文件运行前都会执行conftest.py文件;
实际项目中,一般都用例都是放在不同的模块下,每个模块下的前置条件、后置条件可以放在模块包下的conftest.py文件下;
05
—
PS
后续文章将继续深入pytest的总结和学习;
大家有问题,可以通过公众号首页添加作者微信、多交流、多沟通;
由于最近比较忙,没时间更新,请大家多多包涵;