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正则匹配抓取豆瓣电影链接和评论代码分享
Dec 27 Python
浅谈Python黑帽子取代netcat
Feb 10 Python
详解Python3的TFTP文件传输
Jun 26 Python
Python提取频域特征知识点浅析
Mar 04 Python
使用python爬取微博数据打造一颗“心”
Jun 28 Python
纯python进行矩阵的相乘运算的方法示例
Jul 17 Python
Python 实现Image和Ndarray互相转换
Feb 19 Python
基于python实现上传文件到OSS代码实例
May 09 Python
Virtualenv 搭建 Py项目运行环境的教程详解
Jun 22 Python
PyQt5多线程防卡死和多窗口用法的实现
Sep 15 Python
python Autopep8实现按PEP8风格自动排版Python代码
Mar 02 Python
详解Django中 render() 函数的使用方法
Apr 22 Python
Python实现8种常用抽样方法
Python基于百度API识别并提取图片中文字
Python基于百度AI实现抓取表情包
Python道路车道线检测的实现
浅析Django接口版本控制
浅析Python实现DFA算法
解析目标检测之IoU
You might like
php分页代码学习示例分享
2014/02/20 PHP
在Mac OS上编译安装Nginx+PHP+MariaDB开发环境的教程
2016/02/23 PHP
js 页面关闭前的出现提示的实现代码
2011/05/25 Javascript
修改js confirm alert 提示框文字的简单实例
2016/06/10 Javascript
vuejs2.0实现分页组件使用$emit进行事件监听数据传递的方法
2017/02/22 Javascript
vue2里面ref的具体使用方法
2017/10/27 Javascript
基于打包工具Webpack进行项目开发实例
2018/05/29 Javascript
Bootstrap开发中Tab标签页切换图表显示问题的解决方法
2018/07/13 Javascript
vue项目打包部署_nginx代理访问方法详解
2018/09/20 Javascript
跨域解决之JSONP和CORS的详细介绍
2018/11/21 Javascript
Electron autoUpdater实现Windows安装包自动更新的方法
2018/12/24 Javascript
layui prompt 设置允许空白提交的方法
2019/09/24 Javascript
浅析Vue 中的 render 函数
2020/02/28 Javascript
Vue记住滚动条和实现下拉加载的完美方法
2020/07/31 Javascript
在Python中的Django框架中进行字符串翻译
2015/07/27 Python
78行Python代码实现现微信撤回消息功能
2018/07/26 Python
Python实现批量执行同目录下的py文件方法
2019/01/11 Python
python如何统计代码运行的时长
2019/07/24 Python
Python 画出来六维图
2019/07/26 Python
Pandas —— resample()重采样和asfreq()频度转换方式
2020/02/26 Python
python 连续不等式语法糖实例
2020/04/15 Python
浅谈Python中文件夹和python package包的区别
2020/06/01 Python
详解Python IO编程
2020/07/24 Python
Python基础教程之输入输出和运算符
2020/07/26 Python
python通用数据库操作工具 pydbclib的使用简介
2020/12/21 Python
约瑟夫·特纳男装:Joseph Turner
2017/10/10 全球购物
狗狗玩具、零食和咀嚼物的月度送货服务:Super Chewer
2018/08/22 全球购物
初三新学期计划书
2014/05/03 职场文书
合伙经营协议书范本(通用版)
2014/12/03 职场文书
2014年个人年终总结
2015/03/09 职场文书
证券区域经理岗位职责
2015/04/10 职场文书
圣贤教育改变命运观后感
2015/06/16 职场文书
遗嘱范文
2015/08/07 职场文书
物业管理交接协议书
2016/03/24 职场文书
MySQL如何构建数据表索引
2021/05/13 MySQL
MySQL 服务和数据库管理
2021/11/11 MySQL