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构造函数及解构函数介绍
Feb 26 Python
python使用正则表达式的search()函数实现指定位置搜索功能
Nov 10 Python
Python语言生成水仙花数代码示例
Dec 18 Python
python使用tensorflow深度学习识别验证码
Apr 03 Python
python3读取excel文件只提取某些行某些列的值方法
Jul 10 Python
python使用mitmproxy抓取浏览器请求的方法
Jul 02 Python
Anaconda3+tensorflow2.0.0+PyCharm安装与环境搭建(图文)
Feb 18 Python
使用SimpleITK读取和保存NIfTI/DICOM文件实例
Jul 01 Python
Python中Yield的基本用法
Oct 18 Python
python 利用jieba.analyse进行 关键词提取
Dec 17 Python
Python 数据可视化之Bokeh详解
Nov 02 Python
python多线程方法详解
Jan 18 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将数据库中的电话号码读取出来并生成图片
2008/08/31 PHP
php mssql 数据库分页SQL语句
2008/12/16 PHP
PHP 面向对象程序设计(oop)学习笔记 (二) - 静态变量的属性和方法及延迟绑定
2014/06/12 PHP
PHP实现定时执行任务的方法
2014/10/05 PHP
PHP获取数组最大值下标的方法
2015/05/12 PHP
PHP 绘制网站登录首页图片验证码
2016/04/12 PHP
PHP实现的数组和XML文件相互转换功能示例
2018/03/15 PHP
javascript对象的property和prototype是这样一种关系
2007/03/24 Javascript
基于jquery的滚动新闻列表
2010/06/19 Javascript
Javascript级联下拉菜单以及AJAX数据验证核心代码
2013/05/10 Javascript
JS+css 图片自动缩放自适应大小
2013/08/08 Javascript
浅谈JavaScript正则表达式分组匹配
2015/04/10 Javascript
javascript实现倒计时(精确到秒)
2015/06/26 Javascript
JavaScript实现快速排序的方法
2015/07/31 Javascript
javascript实现网站加入收藏功能
2015/12/16 Javascript
jsp 自动编译机制详细介绍
2016/12/01 Javascript
JS/jQuery实现DIV延时几秒后消失或显示的方法
2018/02/12 jQuery
浅谈webpack打包生成的bundle.js文件过大的问题
2018/02/22 Javascript
vue template中slot-scope/scope的使用方法
2018/09/06 Javascript
[03:02]2014DOTA2西雅图邀请赛 让队员自己告诉你DK NAVI备战情况
2014/07/08 DOTA
python单链表实现代码实例
2013/11/21 Python
Python 中判断列表是否为空的方法
2019/11/24 Python
python3.6使用SMTP协议发送邮件
2020/05/20 Python
Python文件操作模拟用户登陆代码实例
2020/06/09 Python
详解python方法之绑定方法与非绑定方法
2020/08/17 Python
使用Python实现音频双通道分离
2020/12/25 Python
如何利用find命令查找文件
2015/02/07 面试题
《锄禾》教学反思
2014/04/08 职场文书
教室标语大全
2014/06/21 职场文书
2015年高二班主任工作总结
2015/05/25 职场文书
新教师教学工作总结
2015/08/14 职场文书
校园音乐节目广播稿
2015/08/19 职场文书
中学生打架检讨书之500字
2019/08/06 职场文书
浅谈如何提高PHP代码质量之端到端集成测试
2021/05/28 PHP
Python 处理表格进行成绩排序的操作代码
2021/07/26 Python
Java 写一个简单的图书管理系统
2022/04/26 Java/Android