基于python的pytest单元测试框架

news/2024/9/18 20:52:26/ 标签: python, pytest, 单元测试

pytest_0">pytest单元测试框架

单元测试框架概念

单元测试是在软件开发中针对软件的最小单位,比如:函数,方法 进行正确性检查测试

单元测试框架作用

1 测试发现:从多个文件里面去找到我们的测试用例
2 测试执行:按照一定的顺序和规则去执行,并生成结果
3 测试判断:通过断言判断预期结果和实际结果的差异
4 测试报告:统计测试进度、耗时、通过率、生成测试报告

单元测试框架和自动化测试框架关系

自动化测试框架概念

把自动化测试过程中用到的工具或功能,分装成各个模块,包括如果进行自动化脚本编写,分层功能的基础模块。进行持续集成,定时任务的管理模块,发送测试报告,进行测试结果统计分析的统计模块等。把上述的模块组成自动化测试框架。
pytest单元测试框架是自动化测试框架中的组成部分

pytest_12">pytest

  1. pytest可以和selenium、requests、appium结合实现web自动化、接口自动化、app自动化
  2. pytest可以实现测试用例的跳过以及reruns失败用例重试
  3. pytest可以和Jenkins持续集成
  4. pytest可以和allure生成非常美观的测试报告
    pytest-html # (生成html格式的自动化测试报告)
    pytest-xdist # (测试用例分布式执行,多CPU分发)
    pytest-ordering # (用于改变测试用例的执行顺序)
    pytest-rerunfailures # (用例失败后重跑)
    allure-pytest # (用于生成美观的测试报告)

安装

yum install pytest

命名规则

  1. 模块名
    必须用test_开头或以test_结尾
  2. 测试类名
    必须用Test开头,不能有init方法
  3. 测试方法
    必须用test开头

测试用例运行方式

主函数方式

  1. 运行所有
    pytest.main()
  2. 指定模块
    pytest.main([“test_01.py”])
  3. 指定目录
    pytest.main([“./test_py”])
  4. 通过nodeid指定用例运行
    nodeid由:模块名,

http://www.ppmy.cn/news/1518486.html

相关文章

MATLAB发票识别系统

课题介绍 该课题为基于MATLAB的发票识别系统。主要识别发票的编号。可定做发票的日期,金额等字段的识别。通过输入图片,校正,定位目标区域,分割,字符分割,模板匹配识别,得出结果。整个设计包含…

STM32G474之HAL_Delay()会导致死机的原因

使用HAL库需要HAL_Delay()函数支持,离开这个函数,和这个函数有关的函数就无法调用了。遇到这个问题,我们肯定会否定HAL库,也确实它是有点差,但也有好的一面。 为什么HAL库初始化了SysTick定时器,也使能了相…

聊聊2相步进电机的细分算法与细分步进角

2 相步进电机是一种常见的电机类型,广泛应用于各种自动化设备中。细分算法是提高步进电机精度和运行平稳性的重要手段。 一、细分算法的原理 细分算法的基本思想是将一个整步分成若干个微步,通过控制电机绕组中的电流大小和方向,使电机的转…

Javascript归纳与总结——this指向及其改变、new关键字与原型链、异步、闭包和函数防抖与节流

this指向及其改变 普通函数在调用时,this为obj.obj1.fun(),this->obj1,箭头函数在声明定义时this->obj。 Javascript中bind、call、apply區別-CSDN博客 new关键字与原型链 从原型链视角解读VueComponent与Vue关系_vue中重要的原型链关系-CSDN博客 prototy…

【0-1背包】3180. 执行操作可获得的最大总奖励 I

给你一个整数数组 rewardValues,长度为 n,代表奖励的值。 最初,你的总奖励 x 为 0,所有下标都是 未标记 的。你可以执行以下操作 任意次 : 从区间 [0, n - 1] 中选择一个 未标记 的下标 i。 如果 rewardValues[i] 大…

HTTP/3

HTTP/3是超文本传输协议(HTTP)的最新版本,旨在进一步提高Web性能和安全性。HTTP/3的显著变化是它基于QUIC(Quick UDP Internet Connections)协议,而不是之前版本中使用的TCP协议。QUIC是由Google开发的一种…

Pyqt5高级技巧:多线程任务、窗体交互、常用控件介绍(含基础Demo)

一、多线程任务和多窗体交互 【main】 import MainForm #import CRUD import sys from PyQt5.QtWidgets import QApplication, QMainWindow, QMessageBoxif __name__ __main__:app QApplication(sys.argv)MainWindow QMainWindow()ui MainForm.Ui_MainWindow()#也可能是Ui…

pyro plate的介绍,plate也能设置cuda pytorch概率编程 贝叶斯神经网络

class plate(name: str, size: Optional[int] None, subsample_size: Optional[int] None, subsample: Optional[torch.Tensor] None, dim: Optional[int] None, use_cuda: Optional[bool] None, device: Optional[str] None)[source] 基元 plate 获取参数存储()→ pyr…

基于深度学习的金属锈蚀检测系统详细实施指南

1. 项目背景与目标设定 金属锈蚀是工业领域面临的一个普遍问题,它可能导致结构失效、安全隐患和巨大的经济损失。传统的锈蚀检测方法通常依赖人工视觉检查,这种方法不仅耗时耗力,而且容易受到人为因素的影响,导致检测结果不一致或…

二叉树--递归遍历--层次遍历--非递归遍历--详解

//数据结构--树------------------------------------------------------------------------- // 树是一个n个结点的有限集,n为0时,为空树 // 1.树的定义是递归的,即定义中用到了自身 // 2.树的根节点没有前驱,其他所有结点有且只…

微分方程(Blanchard Differential Equations 4th)中文版Section6.1

拉普拉斯变换 积分变换 在本章中,我们研究了一种工具——拉普拉斯变换,用于解微分方程。拉普拉斯变换是众多不同类型的积分变换之一。一般来说,积分变换解决的问题是:一个给定的函数 y ( t ) y(t) y(t) 在多大程度上“像”一个…

如何使用 Go 语言开发微服务

微服务是一种非常热门的架构设计理念,其主张将单个应用程序拆分为一组小型服务,每个服务都单独部署运行,并且这些服务之间通过轻量级的方式进行通信。 1. Go 语言 RPC 标准库 Go 语言自带一个 RPC 标准库 ,通过该标准库,我们可以很方便地实现 RPC 服务端与客户端程序。 …

RabbitMQ本地Ubuntu系统环境部署与无公网IP远程连接服务端实战演示

文章目录 前言1.安装erlang 语言2.安装rabbitMQ3. 安装内网穿透工具3.1 安装cpolar内网穿透3.2 创建HTTP隧道 4. 公网远程连接5.固定公网TCP地址5.1 保留一个固定的公网TCP端口地址5.2 配置固定公网TCP端口地址 💡 推荐 前些天发现了一个巨牛的人工智能学习网站&am…

dubbo:dubbo服务负载均衡、集群容错、服务降级、服务直连配置详解(五)

文章目录 0. 引言1. dubbo负载均衡1.1 负载均衡算法1.2. dubbo负载均衡使用1.3 自定义负载均衡策略 2. dubbo服务容错2.1 8种服务容错策略2.2 自定义容错策略 3. dubbo服务降级(mock)4. dubbo服务直连5. 总结 0. 引言 之前我们讲解了dubbo的基本使用&am…

C# opencv识别二维码

新建桌面程序 安装opencvsharp 拖拽设计页面 选择图片识别代码 using OpenCvSharp; using System.Text;namespace QRcodeIdentity {public partial class Form1 : Form{public Form1(){InitializeComponent();}/// <summary>/// 选择图片/// </summary>/// <pa…

自建远程桌面RustDesk服务器(CentOS配置,保姆级案例)

安装环境: 系统:Centos7 网络:连接互联网 一、环境准备: ①变更国内yum源(方便安装包下载) 备份源文件 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup 下载国内(阿里)源文件: curl -o /etc/yum.repos.d/CentOS-Base.repo htt…

vue3+ts项目新建后找不到模块vue或类型{}上不存在属性

新建的项目&#xff0c;不影响功能&#xff0c;但是红色的波浪线很不好看。 在tsconfig.json文件中增加一行代码&#xff1a;让ts识别vue文件 "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.tsx", "src/**/*.vue&quo…

Pycharm module ‘serial‘ has no attribute ‘Serial‘

已经pip install serial 已经提示安装成功了&#xff0c;提示没有Serial的属性&#xff0c;经过查询 &#xff0c;发现安装的模块不对&#xff0c;应该安装pyserial模块。 解决步骤 第一步&#xff1a;卸载serial pip uninstall serial 第二步&#xff1a;安装pyserial pip u…

TCP/UDP的对比,粘包分包抓包,http协议

服务器端&#xff1a; 一、loop 127.0.0.1本地回环测试地址 二、tcp特点 面向连接、可靠传输、字节流 粘包问题&#xff1a;tcp流式套接字&#xff0c;数据与数据之间没有套接字&#xff0c;导致可能多次的数据粘到一起 解决方法&#xff1a;&#xff08;1&#xff09;规…

【hot100篇-python刷题记录】【最小覆盖子串】

R7-子串篇 class Solution:def minWindow(self, s: str, t: str) -> str:ret_left,ret_right-1,len(s)left0#s子串字母出现的次数cnt_sCounter()#t中字母出现的次数cnt_tCounter(t)for right,c in enumerate(s):cnt_s[c]1while cnt_s>cnt_t:#找到更短的子串if right-left…