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 相关文章推荐
Python开发常用的一些开源Package分享
Feb 14 Python
python循环监控远程端口的方法
Mar 14 Python
结合Python的SimpleHTTPServer源码来解析socket通信
Jun 27 Python
python爬虫实现教程转换成 PDF 电子书
Feb 19 Python
Python利用ORM控制MongoDB(MongoEngine)的步骤全纪录
Sep 13 Python
在Mac上删除自己安装的Python方法
Oct 29 Python
使用Python获取网段IP个数以及地址清单的方法
Nov 01 Python
解决pycharm同一目录下无法import其他文件
Feb 12 Python
快速解决jupyter启动卡死的问题
Apr 10 Python
python实现粒子群算法
Oct 15 Python
Python之字符串的遍历的4种方式
Dec 08 Python
Python 流媒体播放器的实现(基于VLC)
Apr 28 Python
Python实现8种常用抽样方法
Python基于百度API识别并提取图片中文字
Python基于百度AI实现抓取表情包
Python道路车道线检测的实现
浅析Django接口版本控制
浅析Python实现DFA算法
解析目标检测之IoU
You might like
smarty实例教程
2006/11/19 PHP
PHP判断搜索引擎蜘蛛并自动记忆到文件的代码
2012/02/04 PHP
php计算年龄精准到年月日
2015/11/17 PHP
Yii2框架加载css和js文件的方法分析
2019/05/25 PHP
JavaScript实际应用:innerHTMl和确认提示的使用
2006/06/22 Javascript
ie支持function.bind()方法实现代码
2012/12/27 Javascript
js实现的复制兼容chrome和IE
2014/04/03 Javascript
javascript判断移动端访问设备并解析对应CSS的方法
2015/02/05 Javascript
js获取Get值的方法
2016/09/29 Javascript
微信小程序 vidao实现视频播放和弹幕的功能
2016/11/02 Javascript
jQuery实现的购物车物品数量加减功能代码
2016/11/16 Javascript
ajax +NodeJS 实现图片上传实例
2017/06/06 NodeJs
Node.js 使用AngularJS的方法示例
2018/05/11 Javascript
在Create React App中启用Sass和Less的方法示例
2019/01/16 Javascript
微信小程序学习笔记之本地数据缓存功能详解
2019/03/29 Javascript
详解node和ES6的模块导出与导入
2020/02/19 Javascript
[40:57]TI4 循环赛第二日 iG vs EG
2014/07/11 DOTA
python转换字符串为摩尔斯电码的方法
2015/07/06 Python
Python中常见的数据类型小结
2015/08/29 Python
Flask框架中密码的加盐哈希加密和验证功能的用法详解
2016/06/07 Python
Python 对象中的数据类型
2017/05/13 Python
Python3实现发送QQ邮件功能(文本)
2017/12/15 Python
tensorflow1.0学习之模型的保存与恢复(Saver)
2018/04/23 Python
Random 在 Python 中的使用方法
2018/08/09 Python
python实现批量视频分帧、保存视频帧
2019/05/31 Python
用scikit-learn和pandas学习线性回归的方法
2019/06/21 Python
Django 反向生成url实例详解
2019/07/30 Python
python 实现的IP 存活扫描脚本
2020/12/10 Python
房地产财务管理制度
2014/02/02 职场文书
护士自我鉴定总结
2014/03/24 职场文书
建设工程授权委托书
2014/09/22 职场文书
承兑汇票转让证明怎么写?
2014/11/30 职场文书
2015小学五年级班主任工作总结
2015/05/21 职场文书
入伍志愿书怎么写?
2019/07/19 职场文书
golang日志包logger的用法详解
2021/05/05 Golang
电频谱管理的原则是什么
2022/02/18 无线电