python pytest进阶之conftest.py详解


Posted in Python onJune 27, 2019

前言

前面几篇文章基本上已经了解了pytest 命令使用,收集用例,finxture使用及作用范围,今天简单介绍一下conftest.py文件的作用和实际项目中如是使用此文件!

实例场景

首先们思考这样一个问题:如果我们在编写测试用的时候,每一个测试文件里面的用例都需要先登录后才能完成后面的操作,那么们该如何实现呢?这就需要我们掌握conftest.py文件的使用了。

实例代码

创建如下一个目录

ConftestFile
|conftest.py
|test_file_01.py
|test_file_02.py
|__init__.py
# conftest.py
import pytest
@pytest.fixture()
def login():

print('\n---------------conftest文件login方法开始执行----------------------------')

print('login in conftest.py')

print('----------------conftest.py文件login方法执行结束---------------------------')
# test_file_01.py
def test_01(login):

print('\n------------------用例文件1测试用例1开始执行------------------')

print('login after : in test_file_01->case test_01')

print('-------------------用例文件1测试用例1执行结束------------------------')
# test_file_02.py
def test_02(login):

print('\n------------------用例文件2测试用例2开始执行------------------')

print('login after : in test_file_01->case test_01')

print('-------------------用例文件2测试用例2执行结束------------------------')

我们先来运行一下这个实例代码看看输出结果

1.在pycharm可以右键目录运行

2.可以在cmd目录中输入 pytest -vs 来运行

test_file_01.py 
---------------conftest文件login方法开始执行----------------------------
login in conftest.py
----------------conftest.py文件login方法执行结束---------------------------
.
------------------用例文件1测试用例1开始执行------------------
login after : in test_file_01->case test_01
-------------------用例文件1测试用例1执行结束------------------------
[ 50%]
test_file_02.py 
---------------conftest文件login方法开始执行----------------------------
login in conftest.py
----------------conftest.py文件login方法执行结束---------------------------
.
------------------用例文件2测试用例2开始执行------------------
login after : in test_file_01->case test_01
-------------------用例文件2测试用例2执行结束------------------------
[100%]
========================== 2 passed in 0.04 seconds ===========================

可以看到每个测试文件的测试用例执行前都执行了conftest.py文件中的login方法,通过这种模式我们就可以实现测试用例前置条件的准备工作了!

conftest文件实际应用中需要结合fixture来使用,那么fixture中参数scope也适用conftest中fixture的特性,这里再说明一下

1.conftest中fixture的scope参数为session,那么所有的测试文件执行前执行一次

2.conftest中fixture的scope参数为module,那么每一个测试文件执行前都会执行一次conftest文件中的fixture

3.conftest中fixture的scope参数为class,那么每一个测试文件中的测试类执行前都会执行一次conftest文件中的fixture

4.conftest中fixture的scope参数为function,那么所有文件的测试用例执行前都会执行一次conftest文件中的fixture

总结

理论往往都需要实践的验证,所以要想掌握conftest具体的使用,还需要多加使用代码验证!我上面的代码只是验证了测试文件中测试函数使用conftest.py,实际工作中不仅仅只有函数使用,也往往不仅存在一个conftest.py文件。下面是我总结的特性,希望对大家有帮助吧!

1.conftest.py文件名字是固定的,不可以做任何修改

2.文件和用例文件在同一个目录下,那么conftest.py作用于整个目录

3.conftest.py文件所在目录必须存在__init__.py文件

4.conftest.py文件不能被其他文件导入

5.所有同目录测试文件运行前都会执行conftest.py文件

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python代码的打包与发布详解
Jul 30 Python
跟老齐学Python之玩转字符串(2)
Sep 14 Python
python3中str(字符串)的使用教程
Mar 23 Python
python reduce 函数使用详解
Dec 05 Python
对python读写文件去重、RE、set的使用详解
Dec 11 Python
Python代码太长换行的实现
Jul 05 Python
为什么从Python 3.6开始字典有序并效率更高
Jul 15 Python
Python Opencv任意形状目标检测并绘制框图
Jul 23 Python
Python 如何优雅的将数字转化为时间格式的方法
Sep 26 Python
使用tensorflow显示pb模型的所有网络结点方式
Jan 23 Python
Python借助with语句实现代码段只执行有限次
Mar 23 Python
python 闭包函数详细介绍
Apr 19 Python
详解Python 多线程 Timer定时器/延迟执行、Event事件
Jun 27 #Python
python pytest进阶之fixture详解
Jun 27 #Python
解决pycharm 远程调试 上传 helpers 卡住的问题
Jun 27 #Python
python中pytest收集用例规则与运行指定用例详解
Jun 27 #Python
python取余运算符知识点详解
Jun 27 #Python
如何运行.ipynb文件的图文讲解
Jun 27 #Python
python的pytest框架之命令行参数详解(下)
Jun 27 #Python
You might like
php读取纯真ip数据库使用示例
2014/01/26 PHP
PHP发送AT指令实例代码
2016/05/26 PHP
PHP用PDO如何封装简单易用的DB类详解
2017/07/30 PHP
javascript 可以拖动的DIV(二)
2009/06/26 Javascript
扩展easyui.datagrid,添加数据loading遮罩效果代码
2010/11/02 Javascript
Three.js源码阅读笔记(物体是如何组织的)
2012/12/27 Javascript
JQuery.Ajax之错误调试帮助信息介绍
2013/07/04 Javascript
高效的获取当前元素是父元素的第几个子元素
2013/10/15 Javascript
IE中JS跳转丢失referrer问题的2个解决方法
2014/07/18 Javascript
jQuery EasyUI框架中的Datagrid数据表格组件结构详解
2016/06/09 Javascript
基于AngularJs select绑定数字类型的问题
2018/10/08 Javascript
VUE2.0 ElementUI2.0表格el-table自适应高度的实现方法
2018/11/28 Javascript
ES6 Object属性新的写法实例小结
2019/06/25 Javascript
vue路由传参三种基本方式详解
2019/12/09 Javascript
JS实现滑动导航效果
2020/01/14 Javascript
微信小程序组件生命周期的踩坑记录
2021/03/03 Javascript
Python的Bottle框架中实现最基本的get和post的方法的教程
2015/04/30 Python
浅谈插入排序算法在Python程序中的实现及简单改进
2016/05/04 Python
python创建列表和向列表添加元素的实现方法
2017/12/25 Python
人脸识别经典算法一 特征脸方法(Eigenface)
2018/03/13 Python
python实现整数的二进制循环移位
2019/03/08 Python
Python使用psutil获取进程信息的例子
2019/12/17 Python
python图形开发GUI库pyqt5的详细使用方法及各控件的属性与方法
2020/02/14 Python
浅谈html5 响应式布局
2014/12/24 HTML / CSS
C语言50道问题
2014/10/23 面试题
自荐信需注意事项
2014/01/25 职场文书
2014爱耳日宣传教育活动总结
2014/03/09 职场文书
新品发布会主持词
2014/04/02 职场文书
贫困证明模板(3篇)
2014/09/16 职场文书
团队会宣传标语
2014/10/09 职场文书
社区党风廉政建设调研报告
2015/01/01 职场文书
接触艺术对孩子学习思维有益
2019/08/06 职场文书
Vue项目中如何封装axios(统一管理http请求)
2021/05/02 Vue.js
用Python爬虫破解滑动验证码的案例解析
2021/05/06 Python
人工智能深度学习OpenAI baselines的使用方法
2022/05/20 Python
python数字图像处理数据类型及颜色空间转换
2022/06/28 Python