Pytest中conftest.py的用法

conftest.py文件到底该如何使用呢,下面我们就来详细了解一下conftest.py文件的特点和使用方法吧

Posted in Python onJune 27, 2021

前言

在之前介绍fixture的文章中,我们使用到了conftest.py文件,那么conftest.py文件到底该如何使用呢,下面我们就来详细了解一下conftest.py文件的特点和使用方法吧

什么是conftest.py

我们之前了解了fixture,fixture可以直接定义在测试脚本中,但是有些时候,我们希望一个fixture可以被复用,这就需要对fixture进行集中管理,Pytest使用文件conftest.py集中管理固件.在复杂的项目中,可以在不同的目录层级定义conftest.py,其作用域为其所在的目录和子目录,通常情况下,conftest.py@pytest.fixture()会结合使用,来实现全局的前后置处理。

conftest.py特点

  • conftest.py文件的名称是固定的,不能修改
  • conftest.py与运行的用例要在同一个pakage下,并且有__init__.py文件
  • 不需要import导入conftest.py文件,pytest用例会自动识别该文件,放到根目录下可以全局目录调用,放在某个package下,那就在该package内有效
  • 不同目录可以有自己的conftest.py,一个项目中可以有多个conftest.py
  • pytest会默认读取conftest.py里面的所有fixture,所有同目录测试文件运行前都会执行conftest.py文件

conftest.py用法

在我们实际的测试中,conftest.py文件需要结合fixture来使用,所以fixture中参数scope也适用conftest.py中fixture的特性,这里再说明一下

  • conftest中fixture的scope参数为session,所有的测试文件执行前(后)执行一次conftest.py文件中的fixture。
  • conftest中fixture的scope参数为module,每一个测试.py文件执行前(后)都会执行一次conftest.py文件中的fixture
  • conftest中fixture的scope参数为class,每一个测试文件中的测试类执行前(后)都会执行一次conftest.py文件中的fixture
  • conftest中fixture的scope参数为function,所有文件的测试用例执行前(后)都会执行一次conftest.py文件中的fixture

conftest.py实际案例

我们按照这样的目录新建一个项目

Pytest中conftest.py的用法

在根目录conftestdemo下

根目录中的conftest.py文件中,一般写全局的fixture,比如登录

conftest.py

import pytest


@pytest.fixture(scope="session")
def login():
    print("***登录成功,返回用户名***")
    name = "rockche"
    yield name
    print("***退出登录***")


@pytest.fixture(autouse=True)
def get_name(login):
    name = login
    print(f"--每个用例都调用外层fixiture:打印用户name:{name}--")

根目录下的测试用例

test_1.py

def test_get_name(login):
    name = login
    print("***基础用例:获取用户name***")
    print(f"用户名:{name}")

运行conftestdemo下的所有用例

run.py

import pytest

if __name__ == '__main__':
    pytest.main(["-s", "../conftestdemo/"])

test_baidu目录下

配置针对baidu网站的测试用例独有的fixture

conftest.py

import pytest


@pytest.fixture(scope="module")
def open_baidu(login):
    name = login
    print(f"用户 {name} 打开baidu")

test_case1.py

def test_case2_01(open_baidu):
    print("搜索pytest")


def test_case2_02(open_baidu):
    print("搜索博客园")

test_cnblogs目录下

没有__init__.py文件也没有conftest.py文件

test_case1.py

def test_no_fixture(login):
    print("没有__init__文件,直接进入cnblogs", login)

test_taobao目录下

配置针对taobao网站的测试用例独有的fixture

conftest.py

import pytest


@pytest.fixture(scope="function")
def open_taobao(login):
    name = login
    print(f"用户 {name} 进入淘宝")

test_case1.py

class TestTaobao:
    def test_case1_01(self, open_taobao):
        print("选购商品")

    def test_case1_02(self, open_taobao):
        print("进入结算界面")

运行run.py

Pytest中conftest.py的用法

到此这篇关于Pytest中conftest.py的用法的文章就介绍到这了,更多相关Pytest conftest.py内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
使用wxpython实现的一个简单图片浏览器实例
Jul 10 Python
python使用logging模块发送邮件代码示例
Jan 18 Python
Python实现抢购IPhone手机
Feb 07 Python
django 将model转换为字典的方法示例
Oct 16 Python
Python实现二维曲线拟合的方法
Dec 29 Python
Pyinstaller打包.py生成.exe的方法和报错总结
Apr 02 Python
Pytorch修改ResNet模型全连接层进行直接训练实例
Sep 10 Python
通过 Django Pagination 实现简单分页功能
Nov 11 Python
python列表推导式操作解析
Nov 26 Python
python标准库OS模块函数列表与实例全解
Mar 10 Python
django queryset相加和筛选教程
May 18 Python
基于Python爬取素材网站音频文件
Oct 21 Python
Python实现8种常用抽样方法
Python基于百度API识别并提取图片中文字
Python基于百度AI实现抓取表情包
Python道路车道线检测的实现
浅析Django接口版本控制
浅析Python实现DFA算法
解析目标检测之IoU
You might like
自己动手做一个SQL解释器
2006/10/09 PHP
组合算法的PHP解答方法
2012/02/04 PHP
php多文件上传功能实现原理及代码
2013/04/18 PHP
php 如何获取数组第一个值
2013/08/06 PHP
php增删改查示例自己写的demo
2013/09/04 PHP
Yii中使用PHPExcel导出Excel的方法
2014/12/26 PHP
thinkPHP多表查询及分页功能实现方法示例
2017/07/03 PHP
jQuery 通过事件委派一次绑定多种事件,以减少事件冗余
2010/06/30 Javascript
onclick与listeners的执行先后问题详细解剖
2013/01/07 Javascript
基于jQuery中对数组进行操作的方法
2013/04/16 Javascript
深入理解javaScript中的事件驱动
2013/05/21 Javascript
jQuery实现可收缩展开的级联菜单实例代码
2013/11/27 Javascript
js触发select onchange事件的小技巧
2014/08/05 Javascript
JavaScript前补零操作实例
2015/03/11 Javascript
jquery+html5时钟特效代码分享(可设置闹钟并且语音提醒)
2020/03/30 Javascript
基于jQuery实现网页打印功能
2015/12/01 Javascript
VueJS全面解析
2016/11/10 Javascript
javascript匿名函数中的'return function()'作用
2018/10/15 Javascript
vuex实现数据状态持久化
2019/11/11 Javascript
如何基于filter实现网站整体变灰功能
2020/04/17 Javascript
JS寄快递地址智能解析的实现代码
2020/07/16 Javascript
python实现类似ftp传输文件的网络程序示例
2014/04/08 Python
Python实现从订阅源下载图片的方法
2015/03/11 Python
python3实现短网址和数字相互转换的方法
2015/04/28 Python
在Linux系统上安装Python的Scrapy框架的教程
2015/06/11 Python
浅谈python可视化包Bokeh
2018/02/07 Python
Python3.4实现远程控制电脑开关机
2018/02/22 Python
Python单元测试模块doctest的具体使用
2020/02/10 Python
Python识别验证码的实现示例
2020/09/30 Python
使用CSS3的appearance属性改变任何元素的浏览器默认风格
2012/12/24 HTML / CSS
css3圆角样式分享自定义按钮样式
2013/12/27 HTML / CSS
HTML5如何实现元素拖拽
2016/03/11 HTML / CSS
为娇小女性量身打造:Petite Studio
2018/11/01 全球购物
《最大的麦穗》教学反思
2014/04/17 职场文书
2015年房地产销售工作总结
2015/04/20 职场文书
IDEA 2022 Translation 未知错误 翻译文档失败
2022/04/24 Java/Android