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中除法使用的注意事项
Aug 21 Python
仅利用30行Python代码来展示X算法
Apr 01 Python
Python 数据结构之堆栈实例代码
Jan 22 Python
Python实现的概率分布运算操作示例
Aug 14 Python
基于python实现聊天室程序
Jul 27 Python
Python pymongo模块常用操作分析
Sep 01 Python
python交换两个变量的值方法
Jan 12 Python
Python实现微信自动好友验证,自动回复,发送群聊链接方法
Feb 21 Python
Python 复平面绘图实例
Nov 21 Python
python3读取csv文件任意行列代码实例
Jan 13 Python
Python xpath表达式如何实现数据处理
Jun 13 Python
90行Python代码开发个人云盘应用
Apr 20 Python
Python实现8种常用抽样方法
Python基于百度API识别并提取图片中文字
Python基于百度AI实现抓取表情包
Python道路车道线检测的实现
浅析Django接口版本控制
浅析Python实现DFA算法
解析目标检测之IoU
You might like
探讨fckeditor在Php中的配置详解
2013/06/08 PHP
php面向对象中static静态属性与方法的内存位置分析
2015/02/08 PHP
关于PHP文件的自动运行方法分析
2016/05/13 PHP
关于PHP虚拟主机概念及如何选择稳定的PHP虚拟主机
2018/11/20 PHP
JavaScript中Number.MIN_VALUE属性的使用示例
2015/06/04 Javascript
jQuery中extend函数详解
2015/07/13 Javascript
分享几种比较简单实用的JavaScript tabel切换
2015/12/31 Javascript
js实现的页面矩阵图形变换特效
2016/01/26 Javascript
Bootstrap表单组件教程详解
2016/04/26 Javascript
xmlplus组件设计系列之列表(4)
2017/04/26 Javascript
jQuery事件_动力节点Java学院整理
2017/07/05 jQuery
vue里面父组件修改子组件样式的方法
2018/02/03 Javascript
利用vue重构有赞商城的思路以及总结整理
2019/02/21 Javascript
vue elementUI 表单校验的实现代码(多层嵌套)
2019/11/06 Javascript
跟老齐学Python之有容乃大的list(2)
2014/09/15 Python
python中zip和unzip数据的方法
2015/05/27 Python
Python中几个比较常见的名词解释
2015/07/04 Python
python文件操作相关知识点总结整理
2016/02/22 Python
Python中类的初始化特殊方法
2017/12/01 Python
Python Socket使用实例
2017/12/18 Python
Python清空文件并替换内容的实例
2018/10/22 Python
深入解析Python小白学习【操作列表】
2019/03/23 Python
Pycharm配置PyQt5环境的教程
2020/04/02 Python
利用CSS3实现炫酷的飞机起飞动画
2016/09/17 HTML / CSS
CSS3+font字体文件实现圆形半透明菜单具体步骤(图解)
2013/06/03 HTML / CSS
苹果美国官方商城:Apple美国
2016/08/24 全球购物
英国领先的鞋类零售商:Shoe Zone
2018/12/13 全球购物
澳大利亚波西米亚风情网上商店:Czarina
2019/03/18 全球购物
阿迪达斯新加坡官方网站:adidas新加坡
2019/12/06 全球购物
便利店促销方案
2014/02/20 职场文书
《九色鹿》教学反思
2014/02/27 职场文书
文化宣传方案
2014/03/13 职场文书
求职信怎么写范文
2014/05/26 职场文书
工厂门卫的岗位职责
2014/07/27 职场文书
副总经理岗位职责范本
2014/09/30 职场文书
JS如何使用剪贴板操作Clipboard API
2021/05/17 Javascript