Pytest基础01: 入门demo脚本
目录
1 Pytest接口测试
1.1 最简单版hello world
1.2 pytest.ini
2 pytest兼容unittest
3 封装pytest执行入口
1 Pytest接口测试
Pyest是一个可以用于接口测试的强大框架,开源社区也有非常多的pytest插件。
按江湖传统,学习一个新语言或者新框架,都要先实现一个简单的hello world。
1.1 最简单版hello world
新建test_hello_world.py文件,文件内容如
def test_hello_world():output = 'hello world'print(output)assert output == 'hello world'
直接在pycharm上点击绿色三角形按钮运行,或者命令行运行pytest test_hello_world.py。
测试用例都会有结果判断,一般通过assert来做判断,不符合判断条件用例就失败。
1.2 pytest.ini
pytest很多行为可以通过命令行参数控制,为了方便可以先在pytest.ini配置好一些默认值。
pytest.ini的文件名固定就是这个,不能使用其他名称,然后文件的位置是在最上层目录,用例脚本跟pytest.ini同一个目录或者在子目录中。
例如创建如下目录结构,

上面pytest.ini的三个参数是指定哪些文件、类、函数会被pytest当做测试用例执行。
假如不配置的话默认是目录下所有py文件、Test开头的类、test_开头的函数会被当做用例。
lib_utils.py内容:

test_hello_world.py内容:

通过pytest 01_pytest_proj执行用例的时候,只有test_hello_world会被当做用例执行,因为只有它满足了pytest.ini三个参数指定的条件,python_files = test_*.py 指定test_开头的py文件、python_classes指定Test开头的类、pytest_functions指定test_开头的函数。
如果去掉python_files = test_*.py这个配置,那lib_utils里面的test_not_executed函数也会被当成用例执行。
2 pytest兼容unittest
假如以前习惯了用unittest写单元测试用例,使用pytest也可以兼容之前的unittest用例。
比如针对上面的pytest写单元测试用例,创建如下目录:

pytest.ini内容跟上面pytest用例里面的一样,test_lib_utils.py内容如下:
import unittest
import sys
sys.path.append('01_pytest_proj')
from lib_utils import output_funcclass TestLibUtils(unittest.TestCase):def test_output_func_01(self):info = output_func('candy')self.assertEqual(info, 'hello world from candy')def test_output_func_02(self):info = output_func('')self.assertEqual(info, 'invalid name')
通过pytest 02_utest_proj可以执行test_output_func_01和test_output_func_02两个用例。
3 封装pytest执行入口
简单的场景使用pytest命令直接执行测试用例脚本就行,假如基于pytest做了些二次开发、或者有些其他依赖逻辑要处理,那一般会需要用一个py脚本来作为用例执行入口。
比如创建个这样的目录结构:

run_tests.py内容如下:
import argparse
import pytestdef run_test():parser = argparse.ArgumentParser(description='Demo script')parser.add_argument('--test-root-path', default='', help='Test scripts folder')args = parser.parse_args()params = ['-v', args.test_root_path]pytest.main(params)if __name__ == "__main__":run_test()
可以通过参数--test-root-path来制定用例的目录,
下面命令分别执行pytest用例、单元测试用例
python run_tests.py --test-root-path 01_pytest_proj #等同pytest -v 01_pytest_proj
python run_tests.py --test-root-path 02_utest_proj
相关文章:
Pytest基础01: 入门demo脚本
目录 1 Pytest接口测试 1.1 最简单版hello world 1.2 pytest.ini 2 pytest兼容unittest 3 封装pytest执行入口 1 Pytest接口测试 Pyest是一个可以用于接口测试的强大框架,开源社区也有非常多的pytest插件。 按江湖传统,学习一个新语言或者新框架&…...
ruoyi 多租户 开启后针对某一条sql不适用多租户; 若依多租户sql规则修改
文章参考:多租户功能 | Ruoyi-TDesign 忽略租户 1.如果需要指定单独 SQL 不开启过滤,可在对应的 Mapper 接口添加如下忽略注解: InterceptorIgnore(tenantLine "true", dataPermission "false") 此处注意事项 使…...
driftingblues6靶机
打开靶场 查看页面源代码,最下面有一个注释,提供了一个网址 vmlist.github.io,我们去访问一下 这里是一个github页面,提供攻防虚拟机的下载,对我们解题并没有什么有用的信息,我们再去扫描端口 发现只有80端…...
Neo4j GDS 2.0 安装与配置
Neo4j GDS 2.0 安装与配置 GDS插件安装:Neo4j官方文档 1. GDS简介 Neo4j Graph Data Science (GDS) 库作为 Neo4j Graph Database 的插件提供。该插件需要安装到数据库中并在 Neo4j 配置中列入白名单。有两种主要方法可以实现这一点,我们将在本章中详…...
A*算法与人工势场法结合的路径规划(附MATLAB源码)
A*算法与人工势场法(APF)结合实现路径规划 路径规划是机器人、无人机及自动驾驶等领域中的一个重要问题。本文结合了经典的 A* 算法与 人工势场法(Artificial Potential Field, APF),实现了一种改进的路径规划方法。下…...
BootstrapTable处理表格
需求背景 历史项目使用 BootstrapTable 作为前端组件 应客户需要调整: 冻结前四列对于大文本文字显示部分内容,鼠标悬浮显示完整内容 冻结列 1、引入相关CSS,JS CSS <link rel"stylesheet" href"/css/bootstrap.min.css"> …...
UniApp 打开文件工具,获取文件类型,判断文件类型
注意:以下代码使用 typeScript 开发,如果想在 js 中使用,可参考 npm 已经发布的包:https://www.npmjs.com/package/uni-easy-file NPM 使用 如果想直接在 npm 项目中使用可以直接执行以下命令 npm i uni-easy-file然后直接使用 …...
docker-开源nocodb,使用已有数据库
使用已有数据库 创建本地数据库 数据库:nocodb 用户:nocodb 密码:xxxxxx修改docker-compose.yml 默认网关的 IP 地址是 172.17.0.1(适用于 bridge 网络模式)version: "2.1" services:nocodb:environment:…...
Mysql COUNT() 函数详解
简介 COUNT()函数定义 COUNT()函数是SQL中常用的 聚合函数 ,用于统计满足特定条件的记录数。它可以灵活地应用于各种查询场景,帮助用户快速获取所需的数据统计信息。该函数不仅能够计算所有行的数量,还能针对特定列进行计数,并支…...
单周期CPU电路设计
1.实验目的 本实验旨在让学生通过设计一个简单的单周期 CPU 电路,深入理解 RISC-V 指令集的子集功能实现,掌握数字电路设计与实现的基本流程,包括指令解析、部件组合、电路设计以及功能仿真等环节,同时培养verilog HDL编程能力和…...
从零开始采用命令行创建uniapp vue3 ts springboot项目
文章目录 1,通过命令行创建uniapp vue3 ts项目2, 创建springboot后台项目3, 联调测试 1,通过命令行创建uniapp vue3 ts项目 官方通过命令行创建项目的地址:https://zh.uniapp.dcloud.io/quickstart-cli.html 在执行下面操…...
跟着逻辑先生学习FPGA-实战篇第一课 6-1 LED灯闪烁实验
硬件平台:征战Pro开发板 软件平台:Vivado2018.3 仿真软件:Modelsim10.6d 文本编译器:Notepad 征战Pro开发板资料 链接:https://pan.baidu.com/s/1AIcnaGBpNLgFT8GG1yC-cA?pwdx3u8 提取码:x3u8 1 知识背景 LED,又名…...
springboot 跨域配置
方案一 Configuration public class GlobalCorsConfig {Beanpublic CorsFilter corsFilter() {//1. 添加 CORS配置信息CorsConfiguration config new CorsConfiguration();//放行哪些原始域config.addAllowedOrigin("*");//是否发送 Cookieconfig.setAllowCredenti…...
C语言宏和结构体的使用代码
先看代码: #include <stdio.h> #include <string.h>// 定义一个宏,用于定义结构体 #define DEFINE_STRUCT(name, type1, name1, type2, name2, size, cf) \typedef struct { \type1 name1; …...
微信小程序 覆盖组件cover-view
wxml 覆盖组件 <video src"../image/1.mp4" controls"{{false}}" event-model"bubble"> <cover-view class"controls"> <cover-view class"play" bind:tap"play"> <cover-image class"…...
【Redis知识】Redis进阶-redis还有哪些高级特性?
文章目录 概览1. 持久化2. 复制与高可用3. 事务和脚本4. 发布/订阅 Redis事务示例事务中的错误处理使用 WATCH 进行乐观锁总结 Redis管道一、管道的原理二、管道的特点三、管道的使用场景四、管道的实现示例五、管道的注意事项 发布订阅模式一、Redis发布订阅模式介绍二、Redis…...
【Pytorch实用教程】深入了解 torchvision.models.resnet18 新旧版本的区别
深入了解 torchvision.models.resnet18 新旧版本的区别 在深度学习模型开发中,PyTorch 和 torchvision 一直是我们不可或缺的工具。近期,torchvision 对其模型加载 API 进行了更新,将旧版的 pretrained 参数替换为新的 weights 参数。本文将介绍这一变化的背景、具体区别,…...
攻防世界 - Web - Level 3 | very_easy_sql
关注这个靶场的其它相关笔记:攻防世界(XCTF) —— 靶场笔记合集-CSDN博客 0x01:考点速览 本关考察的是 SSRF 漏洞,需要我们结合 Gopher 协议利用服务端进行越权 SQL 注入。考点不少,总结一下主要有以下几点…...
使用Java Selenium修改打开页面窗口大小
在自动化测试过程中,有时需要模拟不同屏幕尺寸的用户行为,以确保网页在不同设备上的显示效果和用户体验。Selenium是一个强大的自动化测试工具,支持多种编程语言和浏览器,可以帮助我们实现这一需求。本文将详细介绍如何使用Java S…...
基于BiLSTM和随机森林回归模型的序列数据预测
本文以新冠疫情相关数据集为案例,进行新冠数量预测。(源码请留言或评论) 首先介绍相关理论概念: 序列数据特点 序列数据是人工智能和机器学习领域的重要研究对象,在多个应用领域展现出独特的特征。这种数据类型的核心特点是 元素之间的顺序至关重要 ,反映了数据内在的时…...
深度解析SacreBLEU:5个实战技巧提升机器翻译评估效率
深度解析SacreBLEU:5个实战技巧提升机器翻译评估效率 【免费下载链接】sacrebleu Reference BLEU implementation that auto-downloads test sets and reports a version string to facilitate cross-lab comparisons 项目地址: https://gitcode.com/gh_mirrors/s…...
深度解析MSPM0G3106数据手册:从80MHz Cortex-M0+内核到电机控制实战
1. 项目概述:为什么是MSPM0G3106?如果你最近在寻找一款兼具高性能、低功耗和成本效益的微控制器,用于电机控制、数字电源或者需要复杂模拟信号处理的场合,那么TI的MSPM0G系列很可能已经进入了你的视野。而其中的MSPM0G3106&#x…...
二维码坏了别着急扔!3步教你用QRazyBox免费修复损坏的二维码
二维码坏了别着急扔!3步教你用QRazyBox免费修复损坏的二维码 【免费下载链接】qrazybox QR Code Analysis and Recovery Toolkit 项目地址: https://gitcode.com/gh_mirrors/qr/qrazybox 你有没有遇到过这样的情况?打印出来的二维码被水弄湿了&am…...
终极风扇控制解决方案:FanControl让Windows散热管理变得简单高效
终极风扇控制解决方案:FanControl让Windows散热管理变得简单高效 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_T…...
Zotero期刊标签:从数据映射到视觉呈现的自动化实践
1. 科研文献管理的视觉化革命 作为一名常年泡在文献堆里的科研狗,我最头疼的就是面对几百篇PDF时那种无从下手的窒息感。直到三年前偶然发现Zotero的标签染色功能,才真正体会到什么叫"一眼定位关键文献"。想象一下:当你打开文献库&…...
对比直接采购与通过Taotoken使用大模型的月度账单差异
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 对比直接采购与通过Taotoken使用大模型的月度账单差异 1. 背景与观察方法 我们是一个小型技术工作室,日常工作需要频繁…...
AzurLaneLive2DExtract:碧蓝航线Live2D资源提取的完整指南
AzurLaneLive2DExtract:碧蓝航线Live2D资源提取的完整指南 【免费下载链接】AzurLaneLive2DExtract OBSOLETE - see readme / 碧蓝航线Live2D提取 项目地址: https://gitcode.com/gh_mirrors/az/AzurLaneLive2DExtract 想要从碧蓝航线游戏中提取精美的Live2D…...
KLayout 0.30.0:如何用这款专业版图工具提升你的集成电路设计效率
KLayout 0.30.0:如何用这款专业版图工具提升你的集成电路设计效率 【免费下载链接】klayout KLayout Main Sources 项目地址: https://gitcode.com/gh_mirrors/kl/klayout 如果你正在寻找一款既强大又灵活的开源集成电路版图查看与编辑工具,KLayo…...
保姆级教程:用ESP32 AT固件实现手机蓝牙配对,从编译到连接一次搞定
ESP32蓝牙开发实战:从固件编译到手机配对的完整指南 在物联网设备开发中,蓝牙连接是最基础也最常用的功能之一。ESP32作为一款高性价比的Wi-Fi/蓝牙双模芯片,凭借其出色的性能和丰富的开发资源,已经成为智能家居、可穿戴设备等领域…...
如何在 Node.js 项目中快速使用 module-alias:10分钟入门教程
如何在 Node.js 项目中快速使用 module-alias:10分钟入门教程 【免费下载链接】module-alias Register aliases of directories and custom module paths in Node 项目地址: https://gitcode.com/gh_mirrors/mo/module-alias 在 Node.js 开发中,你…...
