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 类与元类的深度挖掘 I【经验】
May 06 Python
Windows安装Python、pip、easy_install的方法
Mar 05 Python
Python OpenCV获取视频的方法
Feb 28 Python
python使用百度文字识别功能方法详解
Jul 23 Python
简单瞅瞅Python vars()内置函数的实现
Sep 27 Python
python创建ArcGIS shape文件的实现
Dec 06 Python
python Popen 获取输出,等待运行完成示例
Dec 30 Python
pytorch中交叉熵损失(nn.CrossEntropyLoss())的计算过程详解
Jan 02 Python
python实现二分类和多分类的ROC曲线教程
Jun 15 Python
20行Python代码实现一款永久免费PDF编辑工具的实现
Aug 27 Python
浅析Python中字符串的intern机制
Oct 03 Python
python使用BeautifulSoup 解析HTML
Apr 24 Python
Python实现8种常用抽样方法
Python基于百度API识别并提取图片中文字
Python基于百度AI实现抓取表情包
Python道路车道线检测的实现
浅析Django接口版本控制
浅析Python实现DFA算法
解析目标检测之IoU
You might like
深入密码加salt原理的分析
2013/06/06 PHP
php使用curl下载指定大小的文件实例代码
2017/09/30 PHP
Extjs 几个方法的讨论
2010/01/28 Javascript
jQuery之日期选择器的深入解析
2013/06/19 Javascript
setInterval()和setTimeout()的用法和区别示例介绍
2013/11/17 Javascript
JavaScript函数的4种调用方法详解
2014/04/22 Javascript
javascript连续赋值问题
2015/07/08 Javascript
JavaScript Math 对象常用方法总结
2016/04/28 Javascript
Vue.js仿Metronic高级表格(一)静态设计
2017/04/17 Javascript
jQuery+ajax实现修改密码验证功能实例详解
2017/07/06 jQuery
bootstrap-Treeview实现级联勾选
2017/11/23 Javascript
jquery在启动页面时,自动加载数据的实例
2018/01/22 jQuery
小程序click-scroll组件设计
2019/06/18 Javascript
基于JavaScript获取base64图片大小
2019/10/18 Javascript
JS 获取文件后缀,判断文件类型(比如是否为图片格式)
2020/05/09 Javascript
vue-router为激活的路由设置样式操作
2020/07/18 Javascript
[00:12]DAC SOLO赛卫冕冠军 VG.Paparazi灬展现SOLO技巧
2018/04/06 DOTA
jupyter安装小结
2016/03/13 Python
Python中enumerate()函数编写更Pythonic的循环
2018/03/06 Python
解决PyCharm的Python.exe已经停止工作的问题
2018/11/29 Python
python 批量添加的button 使用同一点击事件的方法
2019/07/17 Python
python中下标和切片的使用方法解析
2019/08/27 Python
如何使用python进行pdf文件分割
2019/11/11 Python
Python3 main函数使用sys.argv传入多个参数的实现
2019/12/25 Python
PyCharm第一次安装及使用教程
2020/01/08 Python
Python 通过正则表达式快速获取电影的下载地址
2020/08/17 Python
详解python tcp编程
2020/08/24 Python
Python通过fnmatch模块实现文件名匹配
2020/09/30 Python
html5拍照功能实现代码(htm5上传文件)
2013/12/11 HTML / CSS
奥地利度假券的专家:we-are.travel
2019/04/10 全球购物
恒华伟业笔试面试题
2015/02/26 面试题
Ruby如何定义一个类
2012/10/08 面试题
运动会通讯稿400字
2014/01/28 职场文书
新学期国旗下演讲稿
2014/05/08 职场文书
护士节演讲稿开场白
2014/08/25 职场文书
关于Python使用turtle库画任意图的问题
2022/04/01 Python