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将html转成PDF的实现代码(包含中文)
Mar 04 Python
Python实现优先级队列结构的方法详解
Jun 02 Python
Python实现读取并保存文件的类
May 11 Python
在cmd中运行.py文件: python的操作步骤
May 12 Python
Python使用pymysql从MySQL数据库中读出数据的方法
Jul 25 Python
Python遍历文件夹 处理json文件的方法
Jan 22 Python
python for 循环获取index索引的方法
Feb 01 Python
django 中QuerySet特性功能详解
Jul 25 Python
python 单线程和异步协程工作方式解析
Sep 28 Python
python的json中方法及jsonpath模块用法分析
Dec 06 Python
python 解压、复制、删除 文件的实例代码
Feb 26 Python
基于python制作简易版学生信息管理系统
Apr 20 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
音乐朗读剧《MARS RED》2021年TV动画化决定!
2020/03/06 日漫
php预定义常量
2006/12/25 PHP
初品cakephp 入门基础
2012/02/16 PHP
解析PHP正则提取或替换img标记属性
2013/06/26 PHP
PHP保留两位小数并且四舍五入及不四舍五入的方法
2013/09/22 PHP
PHP的foreach中使用引用时需要注意的一个问题和解决方法
2014/05/29 PHP
php中ltrim()、rtrim()与trim()删除字符空格实例
2014/11/25 PHP
smarty模板引擎中变量及变量修饰器用法实例
2015/01/22 PHP
PHP实现的链式队列结构示例
2017/09/15 PHP
JavaScript 无符号右移赋值操作
2009/04/17 Javascript
javascript中检测变量的类型的代码
2010/12/28 Javascript
Jquery 绑定时间实现代码
2011/05/03 Javascript
一个支付页面DEMO附截图
2014/07/22 Javascript
TypeScript具有的几个不同特质
2015/04/07 Javascript
jQuery动画效果实现图片无缝连续滚动
2016/01/12 Javascript
js获取时间函数及扩展函数的方法
2016/10/30 Javascript
基于JavaScript实现下拉列表左右移动代码
2017/02/07 Javascript
jQuery滑动到底部加载下一页数据的实例代码
2017/05/22 jQuery
Vue.js添加组件操作示例
2018/06/13 Javascript
在vue项目实现一个ctrl+f的搜索功能
2020/02/28 Javascript
[04:40]DOTA2-DPC中国联赛1月26日Recap集锦
2021/03/11 DOTA
python3中bytes和string之间的互相转换
2017/02/09 Python
深入理解python中sort()与sorted()的区别
2018/08/29 Python
python版本单链表实现代码
2018/09/28 Python
浅谈Python采集网页时正则表达式匹配换行符的问题
2018/12/20 Python
python实现自动获取IP并发送到邮箱
2018/12/26 Python
Python合并同一个文件夹下所有PDF文件的方法
2019/03/11 Python
详解Python使用Plotly绘图工具,绘制甘特图
2019/04/02 Python
Python集合基本概念与相关操作实例分析
2019/10/30 Python
CSS3+font字体文件实现圆形半透明菜单具体步骤(图解)
2013/06/03 HTML / CSS
施华洛世奇西班牙官网:SWAROVSKI西班牙
2019/06/06 全球购物
中医药大学市场营销专业自荐信
2013/09/29 职场文书
三严三实心得体会范文
2014/10/13 职场文书
感谢信模板大全
2015/01/23 职场文书
材料采购员岗位职责
2015/04/03 职场文书
贫民窟的百万富翁观后感
2015/06/09 职场文书