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 获取本机ip地址的两个方法
Feb 25 Python
Python模仿POST提交HTTP数据及使用Cookie值的方法
Nov 10 Python
python使用opencv进行人脸识别
Apr 07 Python
基于Python中单例模式的几种实现方式及优化详解
Jan 09 Python
Python3爬取英雄联盟英雄皮肤大图实例代码
Nov 14 Python
python 自定义对象的打印方法
Jan 12 Python
python爬虫容易学吗
Jun 02 Python
python 使用建议与技巧分享(四)
Aug 18 Python
python 进制转换 int、bin、oct、hex的原理
Jan 13 Python
Pytorch实现WGAN用于动漫头像生成
Mar 04 Python
python3.9之你应该知道的新特性详解
Apr 29 Python
python编写五子棋游戏
May 25 Python
Python实现8种常用抽样方法
Python基于百度API识别并提取图片中文字
Python基于百度AI实现抓取表情包
Python道路车道线检测的实现
浅析Django接口版本控制
浅析Python实现DFA算法
解析目标检测之IoU
You might like
PHP判断文件是否存在、是否可读、目录是否存在的代码
2012/10/03 PHP
解析PHP中的unset究竟会不会释放内存
2013/07/18 PHP
浅谈php7的重大新特性
2015/10/23 PHP
PHP编程之设置apache虚拟目录
2016/07/08 PHP
PHP手机短信验证码实现流程详解
2018/05/17 PHP
Yii框架视图、视图布局、视图数据块操作示例
2019/10/14 PHP
javascript-表格排序(降序/反序)实现介绍(附图)
2013/05/30 Javascript
js创建一个input数组并绑定click事件的方法
2014/06/12 Javascript
推荐5 个常用的JavaScript调试技巧
2015/01/08 Javascript
jQuery实现炫酷的鼠标轨迹特效
2015/02/01 Javascript
JavaScript组件焦点与页内锚点间传值的方法
2015/02/02 Javascript
JavaScript通过字典进行字符串翻译转换的方法
2015/03/19 Javascript
jQuery使用$.ajax进行异步刷新的方法(附demo下载)
2015/12/04 Javascript
javascript的几种继承方法介绍
2016/03/22 Javascript
javascript正则表达式模糊匹配IP地址功能示例
2017/01/06 Javascript
jQuery扩展_动力节点Java学院整理
2017/07/05 jQuery
Angular2里获取(input file)上传文件的内容的方法
2017/09/05 Javascript
详解基于vue-cli配置移动端自适应
2018/01/13 Javascript
JS如何操作DOM基于表格动态展示数据
2020/10/15 Javascript
Vue实现省市区三级联动
2020/12/27 Vue.js
JS canvas实现画板和签字板功能
2021/02/23 Javascript
Python计算开方、立方、圆周率,精确到小数点后任意位的方法
2018/07/17 Python
基于python-opencv3的图像显示和保存操作
2019/06/27 Python
python多继承(钻石继承)问题和解决方法简单示例
2019/10/21 Python
Python pandas库中的isnull()详解
2019/12/26 Python
Python PyQt5运行程序把输出信息展示到GUI图形界面上
2020/04/27 Python
python爬虫利用selenium实现自动翻页爬取某鱼数据的思路详解
2020/12/22 Python
详解HTML5新增标签
2017/11/27 HTML / CSS
C语言笔试题
2014/09/04 面试题
顶岗实习接收函
2014/01/09 职场文书
小学一年级学生评语
2014/04/22 职场文书
党员民主生活会整改措施
2014/09/26 职场文书
2014年科协工作总结
2014/12/09 职场文书
2015年全国爱眼日活动方案
2015/05/05 职场文书
2015年国庆晚会主持词
2015/07/01 职场文书
windows server 2016 域环境搭建的方法步骤(图文)
2022/06/25 Servers