pytest全局配置+前后只固件配置

pytest全局配置+前后只固件配置

  • 通过读取pytest.ini配置文件运行
  • 通过读取pytest.ini配置文件运行
    • 无条件跳过
      • pytest.ini
      • test_mashang.py
      • run.py
    • 有条件跳过
      • test_mashang.py
  • pytest框架实现的一些前后置(固件、夹具)处理
    • 方法一(封装)
    • 方法二(装饰器)
  • YAML文件实现接口自动化

通过读取pytest.ini配置文件运行

在这里插入图片描述

pytest.ini是pytest单元测试框架的核心配置文件

  1. 位置:一般放在项目的根目录
  2. 编码:必须是ANSI,可以使用notepad++修改编码格式
  3. 作用:改变pytest默认的行为
  4. 运行规则:不管是主函数的模式运行还是命令行模式运行,都会读取这个文件

通过读取pytest.ini配置文件运行

无条件跳过

在这里插入图片描述

pytest.ini

[pytest]  ; pytest配置部分

addopts = -vs
;pytest的额外选项:
;-v: 详细模式,增加输出的详细程度
;-s: 不捕获stdout,允许显示print语句
;结合使用这些选项,可以提供详细的输出并允许在测试中显示print语句

testpaths=./testcases
; 指定测试用例所在的目录

python_files=test_*.py
; 测试文件的查找模式:
; 匹配以"ms_"开头并以".py"结尾的任何文件

python_classes=Test*
; 测试类的查找模式:
; 匹配以"Test"开头的任何类名

python_functions=test_*
; 测试函数的查找模式:
; 匹配以"test_"开头的任何函数名

#测试用例分组执行
markers =
        smoke:冒烟用例
        mashang:码尚教育
        product_manage:商品管理模块用例
        user_manage:用户管理模块

test_mashang.py

from time import sleep




import pytest


class TestMashang:
    @pytest.mark.skip(reason="无理由跳过")
    # @pytest.mark.smoke
    def test_baili(self):
        sleep(3)
        print("测试百利老师")
        # raise Exception("百里老师开车")

    def test_tom(self):
        sleep(3)
        print("测试汤姆老师")

    # @pytest.mark.smoke
    def test_yiyao(self):
        sleep(3)
        print("测试一摇老师")


# 主函数
if __name__ == '__main__':
    pytest.main()

run.py

import pytest
if __name__ == '__main__':
    pytest.main()

在这里插入图片描述

有条件跳过

test_mashang.py

from time import sleep

import pytest


class TestMashang:
    workage = 8

    @pytest.mark.skip(reason="无理由跳过")
    # @pytest.mark.smoke
    def test_baili(self):
        # sleep(3)
        print("测试百利老师")
        # raise Exception("百里老师开车")

    def test_tom(self):
        # sleep(3)
        print("测试汤姆老师")

    @pytest.mark.skipif(workage < 10, reason="工龄小于10跳过")
    # @pytest.mark.smoke
    def test_yiyao(self):
        # sleep(3)
        print("测试一摇老师")


# 主函数
if __name__ == '__main__':
    pytest.main()

在这里插入图片描述

pytest框架实现的一些前后置(固件、夹具)处理

  • setup/teardown,setup_class/teardown_class
    def setup_class(self):
        print("在每个类之前执行一次")
    def teardown_class(self):
        print("在每个类之后执行一次")


    def setup(self):
        print("在每个用例之前执行一次")
        # sleep(3)

    def teardown(self):
        print("在每个用例之后执行一次")

方法一(封装)

在这里插入图片描述

class CommonUtil:
    def setup_class(self):
        print("在每个类之前执行一次")
    def teardown_class(self):
        print("在每个类之后执行一次")


    def setup(self):
        print("在每个用例之前执行一次")

    def teardown(self):
        print("在每个用例之后执行一次")

在这里插入图片描述

方法二(装饰器)

使用@pytest.fixture装饰器实现部分用例的前后置
@pytest.fixture装饰器的几个参数:
scope:表示被装饰器标记的方法的作用域
function:在函数之前和之后执行
class:在类之前和之后执行
package/session:在整个项目会话之前和之后执行
autouse:自动执行,默认是false

@pytest.fixture(scope="function",autouse=True)
def exe_database_sql():
    print("执行sql查询")
    yield
    print("关闭数据库连接")

YAML文件实现接口自动化

在这里插入图片描述
在这里插入图片描述

def read_yaml():
    return ['chenglong','zhenzidan','caiyilin']
@pytest.fixture(scope="function",autouse=False,params=read_yaml())
def exe_database_sql(request):
    print(request.param)
    print("执行sql查询")
    yield request.param
    print("关闭数据库连接")

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/482055.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【C++航海王:追寻罗杰的编程之路】stack

目录 1 -> stack的介绍和使用 1.1 -> stack的介绍 1.2 -> stack的使用 1.3 -> stack的模拟实现 1 -> stack的介绍和使用 1.1 -> stack的介绍 stack的文档介绍 1. stack是一种容器适配器&#xff0c;专门用在具有后进先出操作的上下文环境中&#xff0c…

MTransE翻译

MTransE翻译 阅读时间&#xff1a;2024.03.23 领域&#xff1a;知识图谱&#xff0c;知识对齐 作者&#xff1a;Muhao Chen等人 UCLA 出处&#xff1a;IJCAI Multilingual Knowledge Graph Embeddings for Cross-lingual Knowledge Alignment 用于交叉知识对齐的多语言知识图…

基于java+springboot+vue实现的外卖平台系统(文末源码+Lw+ppt)23-568

摘 要 伴随着我国社会的发展&#xff0c;人民生活质量日益提高。于是对外卖平台系统进行规范而严格是十分有必要的&#xff0c;所以许许多多的信息管理系统应运而生。此时单靠人力应对这些事务就显得有些力不从心了。所以本论文将设计一套外卖平台系统&#xff0c;帮助商家进…

鸿蒙实战开发-如何通过拖动滑块调节应用内字体大小

介绍 本篇Codelab将介绍如何使用基础组件Slider&#xff0c;通过拖动滑块调节应用内字体大小。要求完成以下功能&#xff1a; 实现两个页面的UX&#xff1a;主页面和字体大小调节页面。拖动滑块改变字体大小系数&#xff0c;列表页和调节页面字体大小同步变化。往右拖动滑块字…

飞企互联-FE企业运营管理平台uploadAttachmentServlet 任意文件上传漏洞

产品简介 飞企互联-FE企业运营管理平台是一个基于云计算、智能化、大数据、物联网、移动互联网等技术支撑的云工作台。这个平台可以连接人、链接端、联通内外&#xff0c;支持企业B2B、C2B与O2O等核心需求&#xff0c;为不同行业客户的互联网转型提供支持。其特色在于提供云端…

【软件测试】探索和学习在模型中的软件测试

&#x1f308;个人主页: Aileen_0v0 &#x1f525;热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法|MySQL| ​&#x1f4ab;个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-JIGESSc1ecUpVUnH {font-family:"trebuchet ms",verdana,arial,sans-serif;f…

C++初阶---类和对象

目录 1. 类的引入 2. 类的定义 4. 类的访问限定符及封装 4.1 访问限定符 4.2 封装 5. 类的作用域 6.类的实例化 7.类对象模型 8. this指针 8.1 this指针的引出 8.2 this指针的特性 8.3 C语言和C实现栈的对比 9.类的六个默认成员函数 10&#xff0c;构造函数 10.1…

基于springboot+vue的餐饮管理系统

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战&#xff0c;欢迎高校老师\讲师\同行交流合作 ​主要内容&#xff1a;毕业设计(Javaweb项目|小程序|Pyt…

【链表】Leetcode 138. 随机链表的复制【中等】

随机链表的复制 给你一个长度为 n 的链表&#xff0c;每个节点包含一个额外增加的随机指针 random &#xff0c;该指针可以指向链表中的任何节点或空节点。 构造这个链表的 深拷贝。 深拷贝应该正好由 n 个 全新 节点组成&#xff0c;其中每个新节点的值都设为其对应的原节点…

【数据结构基础】之八大排序(C语言实现)

【数据结构基础】之八大排序(C语言实现&#xff09; &#x1f427; 冒泡排序♈️ 冒泡排序原理及代码实现♈️ 稳定性分析 &#x1f427; 选择排序♈️ 选择排序原理及代码实现♈️ 稳定性分析 &#x1f427; 插入排序♈️ 插入排序的原理及代码实现♈️ 稳定性分析 &#x1f4…

鸿蒙Harmony应用开发—ArkTS-应用级变量的状态管理

状态管理模块提供了应用程序的数据存储能力、持久化数据管理能力、UIAbility数据存储能力和应用程序需要的环境状态。 说明&#xff1a; 本模块首批接口从API version 7开始支持&#xff0c;后续版本的新增接口&#xff0c;采用上角标单独标记接口的起始版本。 本文中T和S的含义…

echarts多个折线图共用一个x轴和tooltip组件

实现效果 根据接口传来的数据&#xff0c;使用echarts绘制出&#xff0c;共用一个x轴的图表 功能&#xff1a;后端将所有数据传送过来&#xff0c;前端通过监听选中值来展示对应的图表数据 数据格式&#xff1a; 代码&#xff1a; <template><div><div clas…

乐优商城(九)数据同步RabbitMQ

1. 项目问题分析 现在项目中有三个独立的微服务&#xff1a; 商品微服务&#xff1a;原始数据保存在 MySQL 中&#xff0c;从 MySQL 中增删改查商品数据。搜索微服务&#xff1a;原始数据保存在 ES 的索引库中&#xff0c;从 ES 中查询商品数据。商品详情微服务&#xff1a;做…

电脑显示丢失mfc140u.dll怎么办?五种可解决方法分享

DLL&#xff08;动态链接库&#xff09;是一种常见的文件类型&#xff0c;它包含了可以被多个程序共享的代码和数据。MFC140u.dll就是这样一种DLL文件&#xff0c;它的全称是Microsoft Foundation Class Library 14.0 Unicode Version。那么&#xff0c;mfc140u.dll是什么&…

Mybatis-plus的查询方法

1、selectById&#xff08;通过id查询&#xff09; 2、selectOne&#xff08;通过条件查询&#xff0c;返回一条&#xff09; 3、selectBatchIds&#xff08;通过多条id查询&#xff09; 借鉴&#xff1a;http://t.csdnimg.cn/cFP1d 4、selectByMap&#xff08;以键值对的形式…

深度解析深度学习中的长短期记忆网络(LSTM)(含代码实现)

在深度学习中&#xff0c;长短期记忆网络&#xff08;LSTM&#xff09;是一种强大的循环神经网络结构&#xff0c;能够更好地处理长序列数据并减轻梯度消失的问题。本文将介绍LSTM的工作原理&#xff0c;并使用PyTorch实现一个简单的LSTM模型来展示其在自然语言处理中的应用。 …

八、C#计数排序算法

简介 计数排序是一种非比较性的排序算法&#xff0c;适用于排序一定范围内的整数。它的基本思想是通过统计每个元素的出现次数&#xff0c;然后根据元素的大小依次输出排序结果。 实现原理 首先找出待排序数组中的最大值max和最小值min。 创建一个长度为max-min1的数组count…

数据结构->手把手教入门栈与列队(基础)

✅作者简介&#xff1a;大家好&#xff0c;我是橘橙黄又青&#xff0c;一个想要与大家共同进步的男人&#x1f609;&#x1f609; &#x1f34e;个人主页&#xff1a;橘橙黄又青-CSDN博客 1.什么是栈 1.1栈的概念及结构 栈&#xff1a;一种特殊的线性表&#xff0c;其只允许…

SpringBoot 邮件服务集成配置全面解析

前言 本文以网易邮箱&#xff08;及 163 邮箱&#xff09;为例&#xff0c;展示如何为 SpringBoot 项目集成邮件服务&#xff0c;其他邮箱配置类似&#xff0c;可以自行查看 Spring Email 指南 或是其他官方文档 授权码 首先我们需要获取授权码&#xff0c;用于后续配置&…

[MAUI]集成高德地图组件至.NET MAUI Blazor项目

文章目录 前期准备&#xff1a;注册高德开发者并创建 key登录控制台创建 key获取 key 和密钥 创建项目创建JS API Loader配置权限创建定义创建模型创建地图组件创建交互逻辑 项目地址 地图组件在手机App中常用地理相关业务&#xff0c;如查看线下门店&#xff0c;设置导航&…