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

pytest核心用法

一、核心概念(对应 unittest)

unittestpytest核心用法
TestCase测试函数/类函数名以test_开头,类名以Test开头(无__init__
TestSuite目录/标记聚合命令行指定文件/目录,或用@pytest.mark标记用例
TestLoader内置加载器自动识别test_*.py/Test*/test_*,支持pytest.ini自定义规则
TestRunner命令行运行器直接执行pytest命令,搭配参数控制运行逻辑
setUp/tearDownFixture@pytest.fixture()装饰器,支持多作用域复用

二、核心语法(代码示例)

1. 测试用例

# 函数式用例
def test_demo():assert 1 == 1# 类式用例
class TestDemo:def test_case(self):assert "a" in "abc"

2. Fixture

import pytest# 定义Fixture(scope:function/class/module/session)
@pytest.fixture(scope="module")
def init_fixture():return {"data": [1,2,3]}# 用例注入Fixture
def test_use_fixture(init_fixture):assert len(init_fixture["data"]) == 3

3. 断言

def test_assert():assert 5 > 3  # 比较assert not []  # 否定assert {"k": 1} == {"k": 1}  # 相等assert "test" in "pytest"  # 包含

4. 参数化

import pytest# 单/多参数
@pytest.mark.parametrize("a, b, res", [(1,2,3), (4,5,9)])
def test_param(a, b, res):assert a + b == res

5. 跳过用例

import pytest
import sys# 无条件跳过
@pytest.mark.skip(reason="暂不执行")
def test_skip():pass# 条件跳过
@pytest.mark.skipif(sys.version_info < (3.8), reason="需Python3.8+")
def test_skipif():pass

三、常用命令

功能命令
执行所有用例pytest
显示详细日志pytest -v
停止于第一个失败pytest -x
指定文件/类/用例pytest 文件名.py::类名::用例名
生成HTML报告pytest --html=报告名.html
运行指定标记用例pytest -m 标记名(需用@pytest.mark.标记名装饰用例)

四、配置文件(pytest.ini)

[pytest]
python_files = test_*.py  # 测试文件规则
python_classes = Test*    # 测试类规则
python_functions = test_* # 测试函数规则
markers = smoke: 冒烟测试用例demo: 演示用例
http://www.dtcms.com/a/561113.html

相关文章:

  • Linux下的简单进度条程序
  • 【ComfyUI】Stable Zero123 单图生成3D视图
  • 今日策略:年化398%,回撤11%,夏普5.0 | 金融量化多智能体架构方案
  • 16-Redis 消息通知实战指南:任务队列与发布订阅模式全解析
  • 江苏网站建设效果个人微信小程序免费制作
  • 佛山网站优化怎么做网站空间商那个好
  • JavaSe—集合框架、Collection集合
  • 面试redis篇———缓存击穿和缓存雪崩问题及解决策略
  • Redis Stream:高效的消息队列解决方案
  • 杭州设计门户网站中文搜索引擎有哪些平台
  • 【操作系统】408核心考点深度解析|进程通信:三大机制(共享存储/消息传递/管道)详解与对比
  • 长沙网站建立公司网站规范化建设
  • 基于微信小程序的防诈骗管理系统
  • 孤能子视角:EIS六线分析之“王东岳递弱代偿理论“
  • RHCE第五次作业
  • 差分隐私:机器学习和数据发布中的隐私守护神
  • GEO实战:如何让AI正确理解你的专业服务?
  • ARM《9》_在linux中编写内核模块(单.c文件、多.c文件)、内核模块传参(传参、回调)、内核模块互调
  • 兴安盟网站建设桂林软件开发公司
  • 输入关键词自动生成文章宁波seo排名优化教程
  • 【Android Activity】生命周期深入理解
  • 哪些资产最适合RFID技术管理?
  • 如何做网站的书籍建设部网站 专业评估
  • 网站排名下降东莞纸箱定制 技术支持 东莞网站建设
  • 组合数学第六章 容斥定理
  • vscode 安装Jupiter以后,终端无法切换conda环境了
  • 潍坊网站制作最低价格wordpress现在还慢吗
  • 785.力扣LeetCode_ 判断二分图
  • 如何使用表格做网站百度开户推广
  • Go语言设计模式:抽象工厂模式详解