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中的二维数组的操作方法
May 02 Python
python+pyqt实现12306图片验证效果
Oct 25 Python
python编写弹球游戏的实现代码
Mar 12 Python
Python实现的多叉树寻找最短路径算法示例
Jul 30 Python
Python实现查找最小的k个数示例【两种解法】
Jan 08 Python
Python使用pandas和xlsxwriter读写xlsx文件的方法示例
Apr 09 Python
python频繁写入文件时提速的方法
Jun 26 Python
Python计算两个矩形重合面积代码实例
Sep 16 Python
django数据模型(Model)的字段类型解析
Dec 25 Python
Python小白垃圾回收机制入门
Jun 09 Python
python图片合成的示例
Nov 09 Python
Python基础知识之变量的详解
Apr 14 Python
Python实现8种常用抽样方法
Python基于百度API识别并提取图片中文字
Python基于百度AI实现抓取表情包
Python道路车道线检测的实现
浅析Django接口版本控制
浅析Python实现DFA算法
解析目标检测之IoU
You might like
PHP setcookie设置Cookie用法(及设置无效的问题)
2011/07/13 PHP
ThinkPHP模板比较标签用法详解
2014/06/30 PHP
php实现文本数据导入SQL SERVER
2015/05/17 PHP
PHP实现十进制、二进制、八进制和十六进制转换相关函数用法分析
2017/04/25 PHP
PHP实现向关联数组指定的Key之前插入元素的方法
2017/06/06 PHP
JS 统计时间
2021/03/09 Javascript
js调用css属性写法
2013/09/21 Javascript
Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法总结
2013/11/14 Javascript
自制的文件上传JS控件可支持IE、chrome、firefox etc
2014/04/18 Javascript
javascript获取flash版本号的方法
2014/11/20 Javascript
js检测判断日期大于多少天的方法
2015/05/04 Javascript
angularjs学习笔记之三大模块(modal,controller,view)
2015/09/26 Javascript
基于jquery实现简单的手风琴特效
2015/11/24 Javascript
Angularjs全局变量被作用域监听的正确姿势
2016/02/06 Javascript
javaScript 逻辑运算符使用技巧整理
2017/05/03 Javascript
详解微信小程序中的页面代码中的模板的封装
2017/10/12 Javascript
详解js类型判断
2018/05/22 Javascript
mpvue+vuex搭建小程序详细教程(完整步骤)
2018/09/30 Javascript
Node.js API详解之 util模块用法实例分析
2020/05/09 Javascript
基于openlayers实现角度测量功能
2020/09/28 Javascript
[49:07]VGJ.T vs Optic Supermajor小组赛D组 BO3 第二场 6.3
2018/06/04 DOTA
python修改注册表终止360进程实例
2014/10/13 Python
在Python中使用mechanize模块模拟浏览器功能
2015/05/05 Python
pycharm+django创建一个搜索网页实例代码
2018/01/24 Python
python得到windows自启动列表的方法
2018/10/14 Python
python实现全盘扫描搜索功能的方法
2019/02/14 Python
浅析python 动态库m.so.1.0错误问题
2020/05/09 Python
shell程序中如何注释
2012/02/17 面试题
给幼儿园老师的表扬信
2014/01/19 职场文书
电工实训报告总结
2014/11/05 职场文书
初中英语教师个人工作总结
2015/02/09 职场文书
2015年仓库工作总结
2015/04/09 职场文书
后天观后感
2015/06/08 职场文书
保护动物的宣传语
2015/07/13 职场文书
2016年清明节期间群众祭祀活动工作总结
2016/04/01 职场文书
vue生命周期钩子函数以及触发时机
2022/04/26 Vue.js