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 28 Python
python如何通过protobuf实现rpc
Mar 06 Python
python中OrderedDict的使用方法详解
May 05 Python
Python 编码Basic Auth使用方法简单实例
May 25 Python
python时间序列按频率生成日期的方法
May 14 Python
解决python flask中config配置管理的问题
Jul 26 Python
python二分法查找算法实现方法【递归与非递归】
Dec 06 Python
Python实现计算长方形面积(带参数函数demo)
Jan 18 Python
Django:使用filter的pk进行多值查询操作
Jul 15 Python
Python filter过滤器原理及实例应用
Aug 18 Python
Python CategoricalDtype自定义排序实现原理解析
Sep 11 Python
Python中文纠错的简单实现
Jul 07 Python
Python实现8种常用抽样方法
Python基于百度API识别并提取图片中文字
Python基于百度AI实现抓取表情包
Python道路车道线检测的实现
浅析Django接口版本控制
浅析Python实现DFA算法
解析目标检测之IoU
You might like
php使用websocket示例详解
2014/03/12 PHP
destoon实现VIP排名一直在前面排序的方法
2014/08/21 PHP
PHP函数shuffle()取数组若干个随机元素的方法分析
2016/04/02 PHP
php中的单引号、双引号和转义字符详解
2017/02/16 PHP
PHP面向对象之里氏替换原则简单示例
2018/04/08 PHP
PDO::_construct讲解
2019/01/27 PHP
HTML页面如何象ASP一样接受参数
2007/02/07 Javascript
使用Jquery搭建最佳用户体验的登录页面之记住密码自动登录功能(含后台代码)
2011/07/10 Javascript
nodejs的require模块(文件模块/核心模块)及路径介绍
2013/01/14 NodeJs
javaScript中的this示例学习详解及工作原理
2014/01/13 Javascript
jQuery热气球动画半透明背景的后台登录界面代码分享
2015/08/28 Javascript
javascript实现checkbox复选框实例代码
2016/01/10 Javascript
深入学习jQuery Validate表单验证(二)
2016/01/18 Javascript
jQuery插件 Jqplot图表实例
2016/06/18 Javascript
js事件源window.event.srcElement兼容性写法(详解)
2016/11/25 Javascript
微信小程序 简单教程实例详解
2017/01/13 Javascript
JS实现中国公民身份证号码有效性验证
2017/02/20 Javascript
JS随机数产生代码分享
2018/02/24 Javascript
你点的 ES6一些小技巧,请查收
2018/04/25 Javascript
JS实现星星海特效
2019/12/24 Javascript
vue实现抽屉弹窗效果
2020/11/15 Javascript
Python3遍历目录树实现方法
2015/05/22 Python
Python的自动化部署模块Fabric的安装及使用指南
2016/01/19 Python
Python每天必学之bytes字节
2016/01/28 Python
pip matplotlib报错equired packages can not be built解决
2018/01/06 Python
Python实现的拉格朗日插值法示例
2019/01/08 Python
Python-numpy实现灰度图像的分块和合并方式
2020/01/09 Python
IFCHIC台湾:欧美国际设计师品牌
2019/05/18 全球购物
运动会稿件200字
2014/02/07 职场文书
环保标语口号
2014/06/13 职场文书
研究生求职自荐书
2014/06/23 职场文书
青年标兵事迹材料
2014/08/16 职场文书
大学生预备党员自我评价
2015/03/04 职场文书
《打电话》教学反思
2016/02/22 职场文书
Python Pandas解析读写 CSV 文件
2022/04/11 Python
python高温预警数据获取实例
2022/07/23 Python