Pytest中conftest.py的用法

 更新时间:2021年06月27日 15:12:12   作者:RockChe''''s Blog  
conftest.py文件到底该如何使用呢,下面我们就来详细了解一下conftest.py文件的特点和使用方法吧,感兴趣的小伙伴们可以参考一下

前言

在之前介绍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实际案例

我们按照这样的目录新建一个项目

在根目录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内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python中使用dwebsocket实现后端数据实时刷新

    Python中使用dwebsocket实现后端数据实时刷新

    dwebsocket是Python中一款用于实现WebSocket协议的库,可用于后端数据实时刷新。在Django中结合使用dwebsocket和Channels,可以实现前后端的实时通信,支持双向数据传输和消息推送,适用于实时聊天、数据监控、在线游戏等场景
    2023-04-04
  • Python3实现的字典、列表和json对象互转功能示例

    Python3实现的字典、列表和json对象互转功能示例

    这篇文章主要介绍了Python3实现的字典、列表和json对象互转功能,结合实例形式分析了Python使用json模块针对json格式数据编码转换相关操作技巧,需要的朋友可以参考下
    2018-05-05
  • 使用Python进行数据备份的指南大全

    使用Python进行数据备份的指南大全

    利用Python进行数据备份与恢复是一种常见的做法,对于数据库,你可以使用Python中的数据库连接库(如sqlite3、SQLAlchemy等)连接到数据库,然后执行备份操作,将数据库的内容保存到一个备份文件中,本文给大家介绍了使用Python进行数据备份的指南大全,需要的朋友可以参考下
    2024-05-05
  • python如何用正则表达式提取字符串

    python如何用正则表达式提取字符串

    这篇文章主要介绍了python如何用正则表达式提取字符串问题,具有很好的参考价值,希望对大家有所帮助。
    2023-03-03
  • pygame库pgu使用示例代码

    pygame库pgu使用示例代码

    pgu全称是Phil’s pyGame Utilities,是pygame的一组模块与脚本,其中还有gui集成了一些小模块,现在用pygame制作小游戏的人越来越多,但是pygame它是没有弹窗机制的,今天通过本文给大家介绍pygame库pgu使用示例代码,需要的朋友参考下吧
    2021-08-08
  • 使用python实现三维图可视化

    使用python实现三维图可视化

    这篇文章主要介绍了使用python实现三维图可视化,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-04-04
  • django框架forms组件用法实例详解

    django框架forms组件用法实例详解

    这篇文章主要介绍了django框架forms组件用法,结合实例形式详细分析了Django框架forms组件源码及常用操作方法与使用注意事项,需要的朋友可以参考下
    2019-12-12
  • 一些让Python代码简洁的实用技巧总结

    一些让Python代码简洁的实用技巧总结

    随着项目代码行数的增加,不可避免的遇到软件架构腐败的问题,所以如何写出简洁的代码至关重要,这篇文章主要给大家介绍了一些让Python代码简洁的实用技巧,需要的朋友可以参考下
    2021-08-08
  • Django视图类型总结

    Django视图类型总结

    在本篇文章里小编给大家整理的是一篇关于Django视图类型的总结内容,有兴趣的朋友们可以学习下。
    2021-02-02
  • Python+Pytorch实战之彩色图片识别

    Python+Pytorch实战之彩色图片识别

    这篇文章主要为大家详细介绍了如何利用Python+Pytorch实现彩色图片识别功能,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下
    2022-09-09

最新评论