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调用shell的方法
Nov 20 Python
Python中设置变量作为默认值时容易遇到的错误
Apr 03 Python
【Python】Python的urllib模块、urllib2模块批量进行网页下载文件
Nov 19 Python
Ubuntu 16.04 LTS中源码安装Python 3.6.0的方法教程
Dec 27 Python
Python MD5加密实例详解
Aug 02 Python
Python使用asyncio包处理并发详解
Sep 09 Python
基于python的selenium两种文件上传操作实现详解
Sep 19 Python
Python实现快速排序的方法详解
Oct 25 Python
python numpy--数组的组合和分割实例
Feb 24 Python
Django实现celery定时任务过程解析
Apr 21 Python
python中return不返回值的问题解析
Jul 22 Python
Python面向对象之内置函数相关知识总结
Jun 24 Python
Python实现8种常用抽样方法
Python基于百度API识别并提取图片中文字
Python基于百度AI实现抓取表情包
Python道路车道线检测的实现
浅析Django接口版本控制
浅析Python实现DFA算法
解析目标检测之IoU
You might like
探讨:如何通过stats命令分析Memcached的内部状态
2013/06/14 PHP
显示程序执行时间php函数代码
2013/08/29 PHP
PHP imagegrabscreen和imagegrabwindow(截取网站缩略图)的实例代码
2013/11/07 PHP
PHP中多维数组的foreach遍历示例
2014/06/13 PHP
php开发时容易忘记的一些技术细节
2016/02/03 PHP
PHP判断用户是否已经登录(跳转到不同页面或者执行不同动作)
2016/09/22 PHP
PHP+Apache实现二级域名之间共享cookie的方法
2019/07/24 PHP
PHP 出现 http500 错误的解决方法
2021/03/09 PHP
js下弹出窗口的变通
2007/04/18 Javascript
Javascript中valueOf与toString区别浅析
2013/03/19 Javascript
javascript实现表格增删改操作实例详解
2015/05/15 Javascript
JavaScript定时器和优化的取消定时器方法
2015/07/03 Javascript
阻止表单提交按钮多次提交的完美解决方法
2016/05/16 Javascript
JavaScript中0和""比较引发的问题
2016/05/26 Javascript
Javascript中级语法快速入手
2016/07/30 Javascript
BootStrap中的表单大全
2016/09/07 Javascript
jQuery实现底部浮动窗口效果
2016/09/07 Javascript
Vue 路由 过渡动效 数据获取方法
2018/07/31 Javascript
微信小程序学习笔记之跳转页面、传递参数获得数据操作图文详解
2019/03/28 Javascript
jQuery位置选择器用法实例分析
2019/06/28 jQuery
Vue select 绑定动态变量的实例讲解
2020/10/22 Javascript
[12:21]VICI vs TNC (BO3)
2018/06/07 DOTA
Python中多线程及程序锁浅析
2015/01/21 Python
Python Flask前后端Ajax交互的方法示例
2018/07/31 Python
Python数据类型之List列表实例详解
2019/05/08 Python
Pycharm激活方法及详细教程(详细且实用)
2020/05/12 Python
OpenCV4.1.0+VS2017环境配置的方法步骤
2020/07/09 Python
Python常用断言函数实例汇总
2020/11/30 Python
NBA欧洲商店(法国):NBA Europe Store FR
2016/10/19 全球购物
初三政治教学反思
2014/01/30 职场文书
会计专业导师推荐信
2014/03/08 职场文书
企业道德讲堂实施方案
2014/03/19 职场文书
股权转让协议书
2014/04/12 职场文书
上课说话检讨书500字
2014/11/01 职场文书
MySQL配置主从服务器(一主多从)
2021/08/07 MySQL
mysql的Buffer Pool存储及原理
2022/04/02 MySQL