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验证码识别处理实例
Dec 28 Python
Python提取网页中超链接的方法
Sep 18 Python
Python正则表达式使用范例分享
Dec 04 Python
利用pandas将numpy数组导出生成excel的实例
Jun 14 Python
Ubuntu下Python2与Python3的共存问题
Oct 31 Python
手把手教你如何安装Pycharm(详细图文教程)
Nov 28 Python
对python过滤器和lambda函数的用法详解
Jan 21 Python
在PYQT5中QscrollArea(滚动条)的使用方法
Jun 14 Python
Django model update的多种用法介绍
Mar 28 Python
PyTorch预训练的实现
Sep 18 Python
Python脚本如何在bilibili中查找弹幕发送者
Jun 04 Python
使用Numpy对特征中的异常值进行替换及条件替换方式
Jun 08 Python
Python实现8种常用抽样方法
Python基于百度API识别并提取图片中文字
Python基于百度AI实现抓取表情包
Python道路车道线检测的实现
浅析Django接口版本控制
浅析Python实现DFA算法
解析目标检测之IoU
You might like
php使用百度翻译api示例分享
2014/01/31 PHP
php实现批量压缩图片文件大小的脚本
2014/07/04 PHP
thinkphp多层MVC用法分析
2015/12/30 PHP
HTML中嵌入PHP的简单方法
2016/02/16 PHP
php读取出一个文件夹及其子文件夹下所有文件的方法示例
2017/06/15 PHP
5 cool javascript apps
2007/03/24 Javascript
JS 删除字符串最后一个字符的实现代码
2014/02/20 Javascript
jQuery实现防止提交按钮被双击的方法
2015/03/24 Javascript
JavaScript通过事件代理高亮显示表格行的方法
2015/05/27 Javascript
javascript轻量级库createjs使用Easel实现拖拽效果
2016/02/19 Javascript
AngularJS之依赖注入模拟实现
2016/08/19 Javascript
Vue中添加过渡效果的方法
2017/03/16 Javascript
深入理解vue-loader如何使用
2017/06/06 Javascript
bootstrap timepicker在angular中取值并转化为时间戳
2017/06/13 Javascript
利用express启动一个server服务的方法
2017/09/17 Javascript
vue+socket.io+express+mongodb 实现简易多房间在线群聊示例
2017/10/21 Javascript
对vuejs的v-for遍历、v-bind动态改变值、v-if进行判断的实例讲解
2018/08/27 Javascript
原生JS实现轮播图效果
2018/10/12 Javascript
vue+Vue Router多级侧导航切换路由(页面)的实现代码
2018/12/20 Javascript
JS隐藏号码中间4位代码实例
2019/04/09 Javascript
微信小程序跨页面传递data数据方法解析
2019/12/13 Javascript
[01:51]DAC趣味视频-如何成为职业选手.mp4
2017/04/02 DOTA
python递归计算N!的方法
2015/05/05 Python
python简单实现基于SSL的IRC bot实例
2015/06/15 Python
Python输出各行命令详解
2018/02/01 Python
对python字典过滤条件的实例详解
2019/01/22 Python
使用Python进行体育竞技分析(预测球队成绩)
2019/05/16 Python
Python爬虫爬取有道实现翻译功能
2020/11/27 Python
结婚邀请函范文
2014/01/14 职场文书
空中乘务员岗位职责
2014/03/08 职场文书
2014爱耳日宣传教育活动总结
2014/03/09 职场文书
会计员岗位职责
2014/03/15 职场文书
艺术设计专业个人求职信
2014/04/10 职场文书
读书活动总结
2014/04/28 职场文书
创业计划书之服装
2019/10/07 职场文书
php将xml转化对象的实例详解
2021/11/17 PHP