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自动化测试工具Splinter简介和使用实例
May 13 Python
Python两个整数相除得到浮点数值的方法
Mar 18 Python
Python3.x中自定义比较函数
Apr 24 Python
Python3如何解决字符编码问题详解
Apr 23 Python
Python栈算法的实现与简单应用示例
Nov 01 Python
攻击者是如何将PHP Phar包伪装成图像以绕过文件类型检测的(推荐)
Oct 11 Python
配置 Pycharm 默认 Test runner 的图文教程
Nov 30 Python
解决Python 命令行执行脚本时,提示导入的包找不到的问题
Jan 19 Python
Python绘制热力图示例
Sep 27 Python
python 实现性别识别
Nov 21 Python
Pycharm 解决自动格式化冲突的设置操作
Jan 15 Python
Python 快速验证代理IP是否有效的方法实现
Jul 15 Python
Python实现8种常用抽样方法
Python基于百度API识别并提取图片中文字
Python基于百度AI实现抓取表情包
Python道路车道线检测的实现
浅析Django接口版本控制
浅析Python实现DFA算法
解析目标检测之IoU
You might like
PHP学习笔记之二 php入门知识
2011/01/12 PHP
php实现贪吃蛇小游戏
2016/07/26 PHP
PHP排序算法之堆排序(Heap Sort)实例详解
2018/04/21 PHP
在Laravel中使用DataTables插件的方法
2018/05/29 PHP
laravel实现图片上传预览,及编辑时可更换图片,并实时变化的例子
2019/11/14 PHP
js中的escape及unescape函数的php实现代码
2007/09/04 Javascript
JavaScript 图片预览效果 推荐
2009/12/22 Javascript
10个基于浏览器的JavaScript调试工具分享
2013/02/07 Javascript
jQuery手动点击实现图片轮播特效
2020/04/20 Javascript
javascript针对不确定函数的执行方法
2015/12/16 Javascript
微信小程序 Image API实例详解
2016/09/30 Javascript
js给table赋值的实例代码
2016/10/13 Javascript
微信小程序 video组件详解
2016/10/25 Javascript
JavaScript 详解预编译原理
2017/01/22 Javascript
用js简单提供增删改查接口
2019/05/12 Javascript
Vue的状态管理vuex使用方法详解
2020/02/05 Javascript
mapboxgl区划标签避让不遮盖实现的代码详解
2020/07/01 Javascript
Python内置函数bin() oct()等实现进制转换
2012/12/30 Python
跟老齐学Python之模块的加载
2014/10/24 Python
Linux CentOS7下安装python3 的方法
2018/01/21 Python
Python3.4 tkinter,PIL图片转换
2018/06/21 Python
详解关于Django中ORM数据库迁移的配置
2018/10/08 Python
用python爬取租房网站信息的代码
2018/12/14 Python
python与C、C++混编的四种方式(小结)
2019/07/15 Python
django settings.py 配置文件及介绍
2019/07/15 Python
浅谈JupyterNotebook导出pdf解决中文的问题
2020/04/22 Python
Django celery异步任务实现代码示例
2020/11/26 Python
学生的自我鉴定范文
2013/10/24 职场文书
英文简历中的自荐信范文
2013/12/14 职场文书
北京奥运会主题口号
2014/06/13 职场文书
爬山的活动方案
2014/08/16 职场文书
党员群众路线剖析材料
2014/10/08 职场文书
2014年党务工作总结
2014/11/25 职场文书
写给老师的感谢信
2015/01/20 职场文书
2015年世界水日活动总结
2015/02/09 职场文书
写好求职信的技巧解密
2019/05/14 职场文书