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实现翻转数组功能示例
Jan 12 Python
python 判断网络连通的实现方法
Apr 22 Python
django 删除数据库表后重新同步的方法
May 27 Python
Python实现的特征提取操作示例
Dec 03 Python
Python3 关于pycharm自动导入包快捷设置的方法
Jan 16 Python
在win10和linux上分别安装Python虚拟环境的方法步骤
May 09 Python
Python中的字符串切片(截取字符串)的详解
May 15 Python
Opencv实现抠图背景图替换功能
May 21 Python
Python直接赋值及深浅拷贝原理详解
Sep 05 Python
属性与 @property 方法让你的python更高效
Sep 21 Python
pytho matplotlib工具栏源码探析一之禁用工具栏、默认工具栏和工具栏管理器三种模式的差异
Feb 25 Python
pip/anaconda修改镜像源,加快python模块安装速度的操作
Mar 04 Python
Python实现8种常用抽样方法
Python基于百度API识别并提取图片中文字
Python基于百度AI实现抓取表情包
Python道路车道线检测的实现
浅析Django接口版本控制
浅析Python实现DFA算法
解析目标检测之IoU
You might like
PHP的几个常用数字判断函数代码
2012/04/24 PHP
phpcms手机内容页面添加上一篇和下一篇
2015/06/05 PHP
详解PHP原生DOM对象操作XML的方法
2016/10/17 PHP
PHP使用PhpSpreadsheet操作Excel实例详解
2020/03/26 PHP
jQuery 表单验证插件formValidation实现个性化错误提示
2009/06/23 Javascript
页面中body onload 和 window.onload 冲突的问题的解决
2009/07/01 Javascript
使用js实现雪花飘落效果
2013/08/26 Javascript
如何解决Jquery库及其他库之间的$命名冲突
2013/09/15 Javascript
js实现幻灯片播放图片示例代码
2013/11/07 Javascript
jquery div拖动效果示例代码
2013/12/08 Javascript
Javascript打印局部页面实例
2016/06/21 Javascript
javaScript给元素添加多个class的简单实现
2016/07/20 Javascript
微信小程序 开发之滑块视图容器(swiper)详解及实例代码
2017/02/22 Javascript
关于foreach循环中遇到的问题小结
2017/05/08 Javascript
AngularJS实现的JSONP跨域访问数据传输功能详解
2017/07/20 Javascript
vue 系列——vue2-webpack2框架搭建踩坑之路
2017/12/22 Javascript
原生js实现下拉选项卡
2019/11/27 Javascript
Vue 根据条件判断van-tab的显示方式
2020/08/03 Javascript
一起深入理解js中的事件对象
2021/02/06 Javascript
Python生成随机数组的方法小结
2017/04/15 Python
python中使用正则表达式的后向搜索肯定模式(推荐)
2017/11/11 Python
python中的TCP(传输控制协议)用法实例分析
2019/11/15 Python
python pandas移动窗口函数rolling的用法
2020/02/29 Python
Python中关于logging模块的学习笔记
2020/06/03 Python
python else语句在循环中的运用详解
2020/07/06 Python
泰国国际航空公司官网:Thai Airways International
2019/12/04 全球购物
应用数学自荐书范文
2013/11/24 职场文书
岗位廉洁从政承诺书
2014/03/27 职场文书
我的中国梦演讲稿400字
2014/08/19 职场文书
2014物价局群众路线对照检查材料思想汇报
2014/09/21 职场文书
设立有限责任公司出资协议书
2014/11/01 职场文书
2015年音乐教研组工作总结
2015/07/22 职场文书
运动会班级口号霸气押韵
2015/12/24 职场文书
小学一年级数学教学反思
2016/02/16 职场文书
【海涛DOTA】D-cup邀请赛NV.cn vs DT.Love
2022/04/01 DOTA
css清除浮动clearfix:after的用法详解(附完整代码)
2023/05/21 HTML / CSS