Pytest框架学习18--conftest.py

conftest.py作用

正常情况下,如果多个py文件之间需要共享数据,如一个变量,或者调用一个方法

需要先在一个新文件中编写函数等,然后在使用的文件中导入,然后使用

pytest中定义个conftest.py来实现数据,参数,方法、函数的共享

例如,所有用例都需要登录,可以在conftest中编写后,不用导入其他用例文件,可以直接在每个方法前调用

conftest.py文件是pytest的一个特殊文件,它用于定义项目中的共享fixture、钩子函数(hook functions)、插件和配置。这个文件可以位于测试目录树的任何级别,pytest会自动识别并应用其中定义的内容。

conftest.py特点

conftest.py可以跨.py文件调用,有多个.py文件调用时,可让conftest.py只调用一次fixture,或调用多次fixture

conftest.py与运行的用例要在同一个pakage下**,并且有init.py文件**

不需要import导入 conftest.py,pytest用例会自动识别该文件,放到项目的根目录下就可以全局目录调用了,如果放到某个package下,那就在该package内有效,可有多个conftest.py

conftest.py配置脚本名称是固定的,不能改名称

conftest.py文件不能被其他文件导入

所有同目录测试文件运行前都会执行conftest.py文件

conftest.py使用场景

fixture适用于在同一个py文件中多个用例执行时的使用;而conftest.py方式适用于多个py文件之间的数据共享。比如常见的有以下场景:

请求接口需要共享登录接口的token/session

多个case共享一套测试数据

多个case共享配置信息

eg:

conftest.py

python 复制代码
# conftest.py

import pytest
@pytest.fixture(scope='session')
def get_token():
    token = 'hogwartssdet'
    print('conftest中輸出token:%s' % token)
    return token
python 复制代码
# test_01.py
import pytest

class Test(object):
    def test01(self, get_token):
        token = 'hogwartssdet'
        print("【执行test01.py-Test类-test01用例,获取get_token:%s】" % get_token)
        assert get_token == token


if __name__ == "__main__":
    pytest.main(["-s", "test_01.py", "test_02.py"])
python 复制代码
# test_02.py
import pytest

class Test(object):
    def test02(self, get_token):
        token = 'hogwartssdet'
        print("【执行test02.py-Test类-test02用例,获取get_token:%s】" % get_token)
        assert get_token == token

    def test03(self, get_token):
        token = 'hogwartssdet'
        print("【执行test02.py-Test类-test03用例,获取get_token:%s】" % get_token)
        assert get_token == token

实际上就是pytest定义的特殊的文件,用来简化代码编写,存放公共数据的文件

相关推荐
遇见尚硅谷35 分钟前
C语言:*p++与p++有何区别
c语言·开发语言·笔记·学习·算法
艾莉丝努力练剑1 小时前
【数据结构与算法】数据结构初阶:详解排序(二)——交换排序中的快速排序
c语言·开发语言·数据结构·学习·算法·链表·排序算法
jz_ddk1 小时前
[HarmonyOS] 鸿蒙LiteOS-A内核深度解析 —— 面向 IoT 与智能终端的“小而强大”内核
物联网·学习·华为·harmonyos
试着2 小时前
零基础学习性能测试第五章:Tomcat的性能分析与调优-Tomcat原理,核心配置项,性能瓶颈分析,调优
学习·零基础·tomcat·性能测试
老虎06272 小时前
JavaWeb(苍穹外卖)--学习笔记13(微信小程序开发,缓存菜品,Spring Cache)
笔记·学习·微信小程序
@蓝莓果粒茶3 小时前
LeetCode第350题_两个数组的交集II
c++·python·学习·算法·leetcode·职场和发展·c#
无名工程师4 小时前
AI 学习过程中各阶段的学习重点、时间规划以及不同方向的选择与建议等内容
人工智能·学习
试着4 小时前
零基础学习性能测试第五章:JVM性能分析与调优-垃圾回收器的分类与回收
jvm·学习·零基础·性能测试·垃圾回收器
livemetee4 小时前
Flink2.0学习笔记:Stream API 常用转换算子
大数据·学习·flink
WXX_s4 小时前
【OpenCV篇】OpenCV——03day.图像预处理(2)
人工智能·python·opencv·学习·计算机视觉