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中的try和finally和with方法
May 05 Python
Python之re操作方法(详解)
Jun 14 Python
python爬取m3u8连接的视频
Feb 28 Python
Python基于FTP模块实现ftp文件上传操作示例
Apr 23 Python
利用python画出折线图
Jul 26 Python
在python中将list分段并保存为array类型的方法
Jul 15 Python
Django REST framework 视图和路由详解
Jul 19 Python
基于Python的Jenkins的二次开发操作
May 12 Python
Python定时任务APScheduler原理及实例解析
May 30 Python
keras 回调函数Callbacks 断点ModelCheckpoint教程
Jun 18 Python
python3.7.3版本和django2.2.3版本是否可以兼容
Sep 01 Python
python 爬取吉首大学网站成绩单
Jun 02 Python
Python实现8种常用抽样方法
Python基于百度API识别并提取图片中文字
Python基于百度AI实现抓取表情包
Python道路车道线检测的实现
浅析Django接口版本控制
浅析Python实现DFA算法
解析目标检测之IoU
You might like
关于PHP结束标签的使用细节探讨及联想
2013/03/04 PHP
PHP与Java进行通信的实现方法
2013/10/21 PHP
通过dbi使用perl连接mysql数据库的方法
2014/04/16 PHP
yii2局部关闭(开启)csrf的验证的实例代码
2017/07/10 PHP
PHP常见加密函数用法示例【crypt与md5】
2019/01/27 PHP
JS解密入门 最终变量劫持
2008/06/25 Javascript
node-webkit打包成exe文件被360误报木马的解决方法
2015/03/11 Javascript
jqTransform美化表单
2015/10/10 Javascript
跟我学习javascript的严格模式
2015/11/16 Javascript
JQUERY表单暂存功能插件分享
2016/02/23 Javascript
jQuery焦点图轮播插件KinSlideshow用法分析
2016/06/08 Javascript
JavaScript 栈的详解及实例代码
2017/01/22 Javascript
javascript 初学教程及五子棋小程序的简单实现
2017/07/04 Javascript
jQuery实现的事件绑定功能基本示例
2017/10/11 jQuery
javaScript和jQuery自动加载简单代码实现方法
2017/11/24 jQuery
Vue 自定义指令功能完整实例
2019/09/17 Javascript
[30:51]DOTA2上海特级锦标赛主赛事日 - 3 胜者组第二轮#1Liquid VS MVP.Phx第一局
2016/03/04 DOTA
[01:38]【DOTA2亚洲邀请赛】Sumail——梦开始的地方
2017/03/03 DOTA
python实现连接mongodb的方法
2015/05/08 Python
简单实现python爬虫功能
2015/12/31 Python
浅析python中SQLAlchemy排序的一个坑
2017/02/24 Python
[原创]教女朋友学Python3(二)简单的输入输出及内置函数查看
2017/11/30 Python
Python3解决棋盘覆盖问题的方法示例
2017/12/07 Python
python如何读取bin文件并下发串口
2019/07/05 Python
Python openpyxl读取单元格字体颜色过程解析
2019/09/03 Python
浅谈keras中的batch_dot,dot方法和TensorFlow的matmul
2020/06/18 Python
EGO Shoes美国/加拿大:英国时髦鞋类品牌
2018/08/04 全球购物
Under Armour安德玛德国官网:美国高端运动科技品牌
2019/03/09 全球购物
Gibson London官网:以地道的英国男装而著称
2019/12/06 全球购物
毕业自荐书
2013/12/09 职场文书
报到证丢失证明
2014/01/11 职场文书
安全生产投入制度
2014/01/29 职场文书
党委班子纠正“四风”问题整改措施
2014/10/28 职场文书
中国式结婚:司仪主持词(范文)
2019/07/25 职场文书
python自动统计zabbix系统监控覆盖率的示例代码
2021/04/03 Python
Nginx利用Logrotate实现日志分割
2022/05/20 Servers