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 sleepimport pytestclass TestMashang:@pytest.mark.skip(reason="无理由跳过")# @pytest.mark.smokedef test_baili(self):sleep(3)print("测试百利老师")# raise Exception("百里老师开车")def test_tom(self):sleep(3)print("测试汤姆老师")# @pytest.mark.smokedef 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 sleepimport pytestclass TestMashang:workage = 8@pytest.mark.skip(reason="无理由跳过")# @pytest.mark.smokedef test_baili(self):# sleep(3)print("测试百利老师")# raise Exception("百里老师开车")def test_tom(self):# sleep(3)print("测试汤姆老师")@pytest.mark.skipif(workage < 10, reason="工龄小于10跳过")# @pytest.mark.smokedef 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查询")yieldprint("关闭数据库连接")

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.paramprint("关闭数据库连接")

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Kafka总结问题

Kafka Kafka Kafka Kafka的核心概念/ 结构 topoic Topic 被称为主题&#xff0c;在 kafka 中&#xff0c;使用一个类别属性来划分消息的所属类&#xff0c;划分消息的这个类称为 topic。topic 相当于消息的分配标签&#xff0c;是一个逻辑概念。主题好比是数据库的表&#xff0…

C++进阶之路---C++11相关特性 | 左值引用 | 右值引用 | 完美转发

顾得泉&#xff1a;个人主页 个人专栏&#xff1a;《Linux操作系统》 《C从入门到精通》 《LeedCode刷题》 键盘敲烂&#xff0c;年薪百万&#xff01; 一、C11简介 在2003年C标准委员会曾经提交了一份技术勘误表(简称TC1)&#xff0c;使得C03这个名字已经取代了C98称为C11之…

全球大型语言模型(LLMS)现状与比较

我用上个博文的工具将一篇ppt转换成了图片&#xff0c;现分享给各位看官。 第一部分&#xff1a;国外大语言模型介绍 1&#xff0c;openai的Chatgpt 免费使用方法1&#xff1a;choose-carhttps://share.freegpts.org/list 免费使用方法2&#xff1a;Shared Chathttps://share…

【Java】Map和Set

文章目录 一、Map和Set的概念二、模型三、Map的说明3.1 Map.Entry<K, V>的说明3.2 Map 的常用方法 四、Set的说明4.1 Set的常用方法 一、Map和Set的概念 Map和set是一种专门用来进行搜索的容器或者数据结构&#xff0c;其搜索的效率与其具体的实例化子类有关&#xff0c…

redis和rabbitmq实现延时队列

redis和rabbitmq实现延时队列 延迟队列使用场景Redis中zset实现延时队列Rabbitmq实现延迟队列 延迟队列使用场景 1. 订单超时处理 延迟队列可以用于处理订单超时问题。当用户下单后&#xff0c;将订单信息放入延迟队列&#xff0c;并设置一定的超时时间。如果在超时时间内用户…

Ollama 运行 Cohere 的 command-r 模型

Ollama 运行 Cohere 的 command-r 模型 0. 引言1. 安装 MSYS22. 安装 Golang3. Build Ollama4. 运行 command-r 0. 引言 Command-R Command-R 是一种大型语言模型&#xff0c;针对对话交互和长上下文任务进行了优化。它针对的是“可扩展”类别的模型&#xff0c;这些模型在高…

CTF题型 Http请求走私总结Burp靶场例题

CTF题型 Http请求走私总结&靶场例题 文章目录 CTF题型 Http请求走私总结&靶场例题HTTP请求走私HTTP请求走私漏洞原理分析为什么用前端服务器漏洞原理界定标准界定长度 重要!!!实验环境前提POST数据包结构必要结构快速判断Http请求走私类型时间延迟CL-TETE-CL 练习例题C…

代码随想录阅读笔记-栈与队列【用栈实现队列】

题目 使用栈实现队列的下列操作&#xff1a; push(x) -- 将一个元素放入队列的尾部。 pop() -- 从队列首部移除元素。 peek() -- 返回队列首部的元素。 empty() -- 返回队列是否为空。 示例: MyQueue queue new MyQueue(); queue.push(1); queue.push(2); queue.peek(); …

GPT实战系列-智谱GLM-4的模型调用

GPT实战系列-智谱GLM-4的模型调用 GPT专栏文章&#xff1a; GPT实战系列-实战Qwen通义千问在Cuda 1224G部署方案_通义千问 ptuning-CSDN博客 GPT实战系列-ChatGLM3本地部署CUDA111080Ti显卡24G实战方案 GPT实战系列-Baichuan2本地化部署实战方案 GPT实战系列-让CodeGeeX2帮…

docker仓库登录及配置insecure-registries的方法

docker仓库登录及配置insecure-registries的方法 这篇文章主要介绍了docker仓库登录配置insecure-registries的方法,docker客户端如果配置中添加了insecure-registary配置&#xff0c;就不需要在docker 客户端配置上对应证书&#xff0c;如果不配置要在/etc/docker/certs.d/目…

vue3与Electron构建跨平台应用(webpack)

一、创建vue3项目 vue create vue3_webpack_electron 二、安装Electron npm install --save-dev electron Electron 三、vue add electron-builder vue add electron-builder

优维全面可观测产品能力分解⑥:运维状态可观测

本文是《优维全面可观测产品能力分解》系列文章的第六篇&#xff1a;『运维状态可观测』。基于可观测的数据体系&#xff0c;「运维状态可观测」是实现于运维状态的一次深入可观测。 在日常运维场景中&#xff0c;系统/应用运维人员重点关注的是系统/应用是否可用&#xff0c;…

视频素材库哪个好?这8个短视频相关的优质素材网推荐看看

在这个数字化时代&#xff0c;视频内容的创作变得前所未有地重要。无论是短视频的快速制作&#xff0c;还是专业影片的精心编辑&#xff0c;找到合适的素材资源是每个视频创作者的基本需求。从高清视频片段、无水印的图片&#xff0c;到富有情感的音效&#xff0c;以下精选的网…

LeetCode---126双周赛

题目列表 3079. 求出加密整数的和 3080. 执行操作标记数组中的元素 3081. 替换字符串中的问号使分数最小 3082. 求出所有子序列的能量和 一、求出加密整数的和 按照题目要求&#xff0c;直接模拟即可&#xff0c;代码如下 class Solution { public:int sumOfEncryptedInt…

《剑指 Offer》专项突破版 - 面试题 88 : 动态规划的基础知识(C++ 实现)

目录 前言 面试题 88 : 爬楼梯的最少成本 一、分析确定状态转移方程 二、递归代码 三、使用缓存的递归代码 四、空间复杂度为 O(n) 的迭代代码 五、空间复杂度为 O(1) 的迭代代码 前言 动态规划是目前算法面试中的热门话题&#xff0c;应聘者经常在各大公司的面试中遇到…

JAVA——volatile,wait,notife

文章目录 volatile关键字简识jvm内存模型内存上的优化问题的产生volatile的作用 wait&#xff08;&#xff09;wait()的作用 notify&#xff08;&#xff09;notify的唤醒顺序 volatile关键字 volatile关键字可以保证内存的可见性&#xff0c;什么是内存的可见性呢&#xff1f…

Jenkins中支持maven构建遇到仓库报错问题

目的 Jenkins中支持maven构建(Jenkins使用docker安装&#xff09; 问题 1.构建一个maven项目 2.执行报错 /var/lib/jenkins/local_maven_repo/com/sx/root/1.0.4/root-1.0.4.pom.part.lock (No such file or directory) Failed to transfer Could not transfer artifact co…

Unity发布webgl之后打开PDF文件,不使用js,不和浏览器交互

创建一个按钮&#xff0c;然后点击就会打开 在webgl下要使用这样的路径拼接&#xff0c;不然就会报错。 btnBook.onClick.AddListener(() >{var uri new System.Uri(Path.Combine(Application.streamingAssetsPath "/Books", "文档.pdf"));Debug.Log…

是德科技keysight N1912A双通道功率计

181/2461/8938产品概述&#xff1a; Keysight(原Agilent) N1912A P系列双通道功率计可提供峰值、峰均比、平均功率、上升时间、下降时间、最大功率值、最小功率值以及宽带信号的统计数据。 Keysight(原Agilent) N1912A P系列双通道功率计, 可提供峰值、峰均比、平均功率、上升…

53、Qt/信号与槽、QSS界面设计20240322

一、使用手动连接&#xff0c;将登录框中的取消按钮使用qt4版本的连接到自定义的槽函数中&#xff0c;在自定义的槽函数中调用关闭函数 将登录按钮使用qt5版本的连接到自定义的槽函数中&#xff0c;在槽函数中判断ui界面上输入的账号是否为"admin"&#xff0c;密码是…