当前位置: 首页 > article >正文

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

# conftest.py

import pytest
@pytest.fixture(scope='session')
def get_token():
    token = 'hogwartssdet'
    print('conftest中輸出token:%s' % token)
    return token
# 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"])

# 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定义的特殊的文件,用来简化代码编写,存放公共数据的文件


http://www.kler.cn/a/417099.html

相关文章:

  • 泷羽Sec-星河飞雪-BurpSuite之解码、日志、对比模块基础使用
  • 智享 AI 自动无人直播系统:打破地域与时间枷锁中小微企业的营销破局利器
  • Android 输入事件拦截机制
  • spark同步mysql数据到sqlserver
  • set up RAGFlow on your Mac
  • Java学习,反射
  • Java 虚拟机:承载 Java 生态的神奇魔盒
  • AWS CLI 操作指南
  • 腾讯阅文集团Java后端开发面试题及参考答案
  • Redis和MySQL保持一致性的延迟双删(Delay Double Delete)策略
  • docker compose 快速搭建Nacos单节点测试环境(mysql 版)
  • FreeSWITCH 简单图形化界面36 -使用mod_sms发送短消息
  • 洞察2024:Data+AI驱动的NoETL技术,引爆数据分析新革命
  • 『 Linux 』数据链路层 - ARP协议及数据链路层周边问题
  • ChemBench—— 探索大语言模型在化学领域的新基准框架是否胜过化学专家
  • 基于Java Springboot美食分享系统
  • 不同系统的MySQL的大小写敏感性
  • 新质驱动·科东软件受邀出席2024智能网联+低空经济暨第二届湾区汽车T9+N闭门会议
  • leaflet 的基础使用
  • 蓝桥杯嵌入式入门指南-UART【7】
  • Python基础学习-13模块的介绍
  • 浅谈人工智能之基于容器云进行图生视频大模型搭建
  • labelimg每次标注的时候自动导入预设标签
  • scrapy爬虫框架小案例
  • 音视频-什么是帧,视频为什么要编码
  • 从 HTML 到 CSS:开启网页样式之旅(四)—— 长度单位与显示模式全解析