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

<< 返回目录

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

  • 不带任何参数执行
      在命令行下将目录切换到测试用例所在目录,执行pytest
cmd 复制代码
tyy@DESKTOP-G7V9IT0 ~
$ cd /cygdrive/d/TYYSOFT/Study/Python/pytest

tyy@DESKTOP-G7V9IT0 /cygdrive/d/TYYSOFT/Study/Python/pytest
$ pytest
  • 带用例文件名执行
cmd 复制代码
$ pytest test_feature_subfeature_sample_002.py
  • 执行指定目录下的文件
cmd 复制代码
 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 item

test_feature_subfreature_sample_001_001.py .                                                 [100%]

======================================== 1 passed in 0.01s ========================================
  • 执行类中的所有用例
cmd 复制代码
$ pytest test_feature_subfeature_sample_002.py::TestGroup

输出:

cmd 复制代码
======================================= 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 items

test_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) == 7

test_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 ===================================
  • 执行指定类中的指定用例
cmd 复制代码
$ pytest test_feature_subfeature_sample_002.py::TestGroup::test_feature_subfeature_sample_002_001

输出:

cmd 复制代码
======================================= 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 item

test_feature_subfeature_sample_002.py .                                                      [100%]

======================================== 1 passed in 0.01s ========================================
  • 执行多组测试数据
      使用装饰器@pytest.mark.parametrize可以给测试用例传递多组测试数据,每组测试数据会单独执行。
py 复制代码
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

执行结果

cmd 复制代码
$ 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 items

test_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) == 7

test_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()

示例如下:

py 复制代码
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.main()

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


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

Copyright © 2022~2025 All rights reserved.

<< 返回目录

相关推荐
7ioik几秒前
新增的类以及常用的方法有哪些?
java·开发语言·python
无限进步_几秒前
深入理解顺序表:从原理到完整实现
c语言·开发语言·数据结构·c++·算法·链表·visual studio
繁华似锦respect4 分钟前
C++ 无锁队列(Lock-Free Queue)详细介绍
linux·开发语言·c++·windows·visual studio
星川皆无恙9 分钟前
大数据爬虫可视化分析:基于Python的豆瓣书籍可视化分析系统的设计与实现
大数据·爬虫·python·架构·pycharm·django
专注API从业者10 分钟前
Node.js/Python 调用淘宝关键词搜索 API:从接入到数据解析完整指南
开发语言·数据结构·数据库·node.js
Mr_Xuhhh13 分钟前
pytest -- 测试报告allure
pytest
生而为虫14 分钟前
30.正则表达式的应用
python·正则表达式·django·flask·fastapi·tornado
liu****14 分钟前
九.操作符详解
c语言·开发语言·数据结构·c++·算法
☆光之梦☆14 分钟前
openGauss企业级开源数据库:架构设计原理与核心特性深度拆解
数据库·python
人得思变~谁会嫌自己帅呢?14 分钟前
Java中的类加载器工作原理
java·开发语言