PyTest自学 - pytest的各种执行方式

ops/2025/1/23 5:57:36/

<< 返回目录

pytest_2">1 PyTest自学 - pytest的各种执行方式

  • 不带任何参数执行
      在命令行下将目录切换到测试用例所在目录,执行pytest
tyy@DESKTOP-G7V9IT0 ~
$ cd /cygdrive/d/TYYSOFT/Study/Python/pytesttyy@DESKTOP-G7V9IT0 /cygdrive/d/TYYSOFT/Study/Python/pytest
$ pytest
  • 带用例文件名执行
$ pytest test_feature_subfeature_sample_002.py
  • 执行指定目录下的文件
 pytest ./pytest/

注意:只支持执行子目录下的文件夹,不支持绝对路径。

  • 执行指定文件中的指定函数
$ pytest test_feature_subfreature_sample_001_001.py::test_feature_subfeature_plus_001_001

输出:

======================================= test session starts =======================================
platform win32 -- Python 3.13.1, pytest-8.3.4, pluggy-1.5.0
rootdir: D:\TYYSOFT\Study\Python\pytest
collected 1 itemtest_feature_subfreature_sample_001_001.py .                                                 [100%]======================================== 1 passed in 0.01s ========================================
  • 执行类中的所有用例
$ pytest test_feature_subfeature_sample_002.py::TestGroup

输出:

======================================= test session starts =======================================
platform win32 -- Python 3.13.1, pytest-8.3.4, pluggy-1.5.0
rootdir: D:\TYYSOFT\Study\Python\pytest
collected 2 itemstest_feature_subfeature_sample_002.py .F                                                     [100%]============================================ FAILURES =============================================
________________________ TestGroup.test_feature_subfeature_sample_002_002 _________________________self = <test_feature_subfeature_sample_002.TestGroup object at 0x0000027875F2A350>def test_feature_subfeature_sample_002_002(self):
>       assert 6 + 3 == 7
E       assert (6 + 3) == 7test_feature_subfeature_sample_002.py:9: AssertionError
===================================== short test summary info =====================================
FAILED test_feature_subfeature_sample_002.py::TestGroup::test_feature_subfeature_sample_002_002 - as
sert (6 + 3) == 7
=================================== 1 failed, 1 passed in 0.07s ===================================
  • 执行指定类中的指定用例
$ pytest test_feature_subfeature_sample_002.py::TestGroup::test_feature_subfeature_sample_002_001

输出:

======================================= test session starts =======================================
platform win32 -- Python 3.13.1, pytest-8.3.4, pluggy-1.5.0
rootdir: D:\TYYSOFT\Study\Python\pytest
collected 1 itemtest_feature_subfeature_sample_002.py .                                                      [100%]======================================== 1 passed in 0.01s ========================================
  • 执行多组测试数据
      使用装饰器@pytest.mark.parametrize可以给测试用例传递多组测试数据,每组测试数据会单独执行。
import pytest@pytest.mark.parametrize("input1, input2, expected", [(1, 2, 3),(4, 5, 7),(-1, 1, 0),(0, 0, 0)
])
def test_addition(input1, input2, expected):assert input1 + input2 == expected

执行结果

$ pytest test_feature_subfeature_withdata_001.py
======================================= test session starts =======================================
platform win32 -- Python 3.13.1, pytest-8.3.4, pluggy-1.5.0
rootdir: D:\TYYSOFT\Study\Python\pytest
collected 4 itemstest_feature_subfeature_withdata_001.py .F..                                                 [100%]============================================ FAILURES =============================================
______________________________________ test_addition[4-5-7] _______________________________________input1 = 4, input2 = 5, expected = 7@pytest.mark.parametrize("input1, input2, expected", [(1, 2, 3),(4, 5, 7),(-1, 1, 0),(0, 0, 0)])def test_addition(input1, input2, expected):
>       assert input1 + input2 == expected
E       assert (4 + 5) == 7test_feature_subfeature_withdata_001.py:11: AssertionError
===================================== short test summary info =====================================
FAILED test_feature_subfeature_withdata_001.py::test_addition[4-5-7] - assert (4 + 5) == 7
=================================== 1 failed, 3 passed in 0.06s ===================================
  • 不使用pytest命令行,直接运行py文件执行测试用例
      有些读者觉得老要使用命令行执行用例就比较烦,能不能直接在py文件中直接运行?
    只需要在py源文件中做两件事就可以达到这些效果:
  1. import pytest
  2. 添加pytest.main()

示例如下:

import pytest@pytest.mark.parametrize("input1, input2, expected", [(1, 2, 3),(4, 5, 7),(-1, 1, 0),(0, 0, 0)
])
def test_addition(input1, input2, expected):assert input1 + input2 == expectedpytest.main()

  再运行这个文件时,就会执行测试用例!


作者声明:本文用于记录和分享作者的学习心得,可能有部分文字或示例来源自豆包AI,由于本人水平有限,难免存在表达错误,欢迎留言交流和指教!
Copyright © 2022~2025 All rights reserved.

<< 返回目录


http://www.ppmy.cn/ops/152383.html

相关文章

Gin 框架入门实战系列教程

一&#xff0c;Gin介绍 Gin是一个 Go (Golang) 编写的轻量级 http web 框架&#xff0c;运行速度非常快&#xff0c;如果你是性能和高效的追求者&#xff0c;我们推荐你使用Gin框架。 Gin最擅长的就是Api接口的高并发&#xff0c;如果项目的规模不大&#xff0c;业务相对简单…

Stable diffusion 都支持哪些模型

Stable Diffusion 支持多种模型&#xff0c;主要包括以下几类&#xff1a; 官方基础模型&#xff1a; SD 1.x 系列&#xff08;如 Stable Diffusion 1.4、1.5&#xff09;&#xff1a;这是最经典的模型&#xff0c;适合多种通用场景&#xff0c;使用简单且易于上手。SD 2.x 系列…

Vue.js 什么是 Vue Router

Vue.js 什么是 Vue Router Vue Router 是 Vue.js 的官方路由管理器&#xff0c;专为构建单页应用&#xff08;SPA&#xff09;而设计。它与 Vue.js 核心深度集成&#xff0c;使开发者能够轻松地在应用中管理和导航不同的视图。 Vue Router 的功能 嵌套路由映射&#xff1a;支…

每日一题洛谷P1423 小玉在游泳c++

#include<iostream> using namespace std; int main() {double s;cin >> s;int n 0;double sum 0;double k 2;while (sum < s) {sum k;n;k * 0.98;}cout << n << endl;return 0; }

TypeScript - 利用GPT辅助学习

TypeScript 一、基础1. 安装 TypeScript2. 创建你的第一个 TypeScript 文件3. 编译 TypeScript 代码4. 变量声明与类型注解5. 函数与类型注解6. 总结 二、进阶常用类型1. 类型别名2. 对象类型3. 类型断言4.typeof 操作符 高级类型1. 类2. 交叉类型3. 泛型与 keyof4. 索引签名类…

Spring AI Document

在Spring AI的语境中&#xff0c;“Document”通常指的是待处理或分析的数据源&#xff0c;这些数据源可以是各种格式的文本文件&#xff0c;如PDF、Markdown、JSON等。以下是对Spring AI中Document的详细解析&#xff1a; 一、定义与功能 在Spring AI中&#xff0c;Document…

Tomcat - 高并发性能参数配置

# > 【并发上限 - 控制参数】 max-connections accept-count # 最大连接数 # 服务器在任何给定时间接受和处理的最大连接数。一旦达到限制后&#xff0c;操作系统仍然可能接受基于 “acceptCount” 属性的连接。 server.tomcat.max-connections8192 # 【最大队列长度】连接…

【C++】std::prev用法

std::prev 是 C 标准库中的一个函数&#xff0c;用于获取给定迭代器的前一个位置。它通常与 STL 容器&#xff08;如 vector, list, map 等&#xff09;一起使用。以下是 std::prev 的基本用法和示例。 #include <iostream> #include <vector> #include <itera…