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的*args和**kwargs用法
Nov 01 Python
python使用win32com在百度空间插入html元素示例
Feb 20 Python
python检测远程服务器tcp端口的方法
Mar 14 Python
使用Python标准库中的wave模块绘制乐谱的简单教程
Mar 30 Python
在Python的Flask框架中使用模版的入门教程
Apr 20 Python
Python爬虫常用小技巧之设置代理IP
Sep 13 Python
用Python逐行分析文件方法
Jan 28 Python
详解Python对JSON中的特殊类型进行Encoder
Jul 15 Python
python3.7实现云之讯、聚合短信平台的短信发送功能
Sep 26 Python
python隐藏类中属性的3种实现方法
Dec 19 Python
Python函数默认参数常见问题及解决方案
Mar 26 Python
Python3爬虫关于识别检验滑动验证码的实例
Jul 30 Python
Python实现8种常用抽样方法
Python基于百度API识别并提取图片中文字
Python基于百度AI实现抓取表情包
Python道路车道线检测的实现
浅析Django接口版本控制
浅析Python实现DFA算法
解析目标检测之IoU
You might like
PHP使用CURL实现多线程抓取网页
2015/04/30 PHP
二级域名或跨域共享Cookies的实现方法
2008/08/07 Javascript
使用Math.floor与Math.random取随机整数的方法详解
2013/05/07 Javascript
Javascript设置对象的ReadOnly属性(示例代码)
2013/12/25 Javascript
js 动态修改css文件的方法
2014/08/05 Javascript
JS+CSS实现Div弹出窗口同时背景变暗的方法
2015/03/04 Javascript
理解javascript闭包
2015/12/15 Javascript
浏览器兼容的JS写法总结
2016/04/27 Javascript
jQuery时间日期三级联动(推荐)
2016/11/27 Javascript
jQuery插件FusionCharts实现的3D帕累托图效果示例【附demo源码】
2017/03/25 jQuery
JS实现的将html转为pdf功能【基于浏览器端插件jsPDF】
2018/02/06 Javascript
vue 过滤器filter实例详解
2018/03/14 Javascript
vuex根据不同的用户权限展示不同的路由列表功能
2019/09/20 Javascript
Javascript call及apply应用场景及实例
2020/08/26 Javascript
原生JS实现pc端轮播图效果
2020/12/21 Javascript
[02:43]中国五虎出征TI3视频
2013/08/02 DOTA
[46:10]2014 DOTA2国际邀请赛中国区预选赛 CnB VS HGT
2014/05/21 DOTA
[05:26]2014DOTA2西雅图国际邀请赛 iG战队巡礼
2014/07/07 DOTA
[52:44]VGJ.T vs infamous Supermajor小组赛D组败者组第一轮 BO3 第一场 6.3
2018/06/04 DOTA
python实现复制整个目录的方法
2015/05/12 Python
Python爬取网易云音乐热门评论
2017/03/31 Python
Pandas过滤dataframe中包含特定字符串的数据方法
2018/11/07 Python
pygame游戏之旅 计算游戏中躲过的障碍数量
2018/11/20 Python
Python理解递归的方法总结
2019/01/28 Python
关于Tensorflow分布式并行策略
2020/02/03 Python
Keras 利用sklearn的ROC-AUC建立评价函数详解
2020/06/15 Python
python+django+selenium搭建简易自动化测试
2020/08/19 Python
用python爬虫批量下载pdf的实现
2020/12/01 Python
canvas离屏技术与放大镜实现代码示例
2018/08/31 HTML / CSS
某公司.Net方向面试题
2014/04/24 面试题
如何写一份好的自荐信
2014/01/02 职场文书
校园活动策划书范文
2014/01/10 职场文书
酒店管理失职检讨书
2014/09/16 职场文书
县委常委班子对照检查材料思想汇报
2014/09/28 职场文书
怎样写好演讲稿题目?
2019/08/21 职场文书
mybatis3中@SelectProvider传递参数方式
2021/08/04 Java/Android