Pytest----如何进行自动化脚本执行性能提升即脚本运行时间分析

简介: Pytest----如何进行自动化脚本执行性能提升即脚本运行时间分析

一、显示执行最慢的N个用例

(1)在test_demo.py中编写10个测试函数

import time
def test_demo01():
    time.sleep(0.1)
    assert 1==1

def test_demo02():
    time.sleep(0.2)
    assert 1==1

def test_demo03():
    time.sleep(0.3)
    assert 1==1

def test_demo04():
    time.sleep(0.4)
    assert 1==1

def test_demo05():
    time.sleep(0.5)
    assert 1==1

def test_demo06():
    time.sleep(0.6)
    assert 1==1

def test_demo07():
    time.sleep(0.7)
    assert 1==1

def test_demo08():
    time.sleep(0.8)
    assert 1==1

def test_demo09():
    time.sleep(0.9)
    assert 1==1

def test_demo10():
    time.sleep(1.0)
    assert 1==1

def test_demo11():
    assert 1==1

(2) 使用命令 pytest --durations=5 执行用来显示执行最慢的5个用例

$ pytest --durations=5
========================================================================= test session starts ==========================================================================
platform win32 -- Python 3.9.7, pytest-6.2.5, py-1.10.0, pluggy-1.0.0
rootdir: D:\src\blog\tests\demo02
plugins: allure-pytest-2.9.43, caterpillar-pytest-0.0.2, forked-1.3.0, rerunfailures-10.1, xdist-2.3.0
collected 11 items                                                                                                                                                      

test_demo01.py ...........                                                                                                                                        [100%]

========================================================================= slowest 5 durations ==========================================================================
1.00s call     test_demo01.py::test_demo10
0.92s call     test_demo01.py::test_demo09
0.81s call     test_demo01.py::test_demo08
0.71s call     test_demo01.py::test_demo07
0.60s call     test_demo01.py::test_demo06
========================================================================== 11 passed in 5.61s ==========================================================================

二、显示所有用例的执行时间

(1)使用pytest --durations=0 即可显示所有用例的执行时间

$ pytest --durations=0
========================================================================= test session starts ==========================================================================
platform win32 -- Python 3.9.7, pytest-6.2.5, py-1.10.0, pluggy-1.0.0
rootdir: D:\src\blog\tests\demo02
plugins: allure-pytest-2.9.43, caterpillar-pytest-0.0.2, forked-1.3.0, rerunfailures-10.1, xdist-2.3.0
collected 11 items                                                                                                                                                      

test_demo01.py ...........                                                                                                                                        [100%]

========================================================================== slowest durations ===========================================================================
1.01s call     test_demo01.py::test_demo10
0.92s call     test_demo01.py::test_demo09
0.80s call     test_demo01.py::test_demo08
0.71s call     test_demo01.py::test_demo07
0.60s call     test_demo01.py::test_demo06
0.51s call     test_demo01.py::test_demo05
0.40s call     test_demo01.py::test_demo04
0.31s call     test_demo01.py::test_demo03
0.20s call     test_demo01.py::test_demo02
0.12s call     test_demo01.py::test_demo01

(23 durations < 0.005s hidden.  Use -vv to show these durations.)
========================================================================== 11 passed in 5.63s ==========================================================================

(2)细心的发现上面并没有显示所有的,test_demo11用例没有显示,这是因为pytest默认显示的耗时大于0.005秒的用例,小于0.005秒的用例默认是不显示的,如果要显示耗时小于0.005秒的用例,需要加上 -vv的参数

$ pytest --durations=0 -vv
========================================================================= test session starts ==========================================================================
platform win32 -- Python 3.9.7, pytest-6.2.5, py-1.10.0, pluggy-1.0.0 -- D:\Python39\python.exe
cachedir: .pytest_cache
rootdir: D:\src\blog\tests\demo02
plugins: allure-pytest-2.9.43, caterpillar-pytest-0.0.2, forked-1.3.0, rerunfailures-10.1, xdist-2.3.0
collected 11 items                                                                                                                                                      

test_demo01.py::test_demo01 PASSED                                                                                                                                [  9%]
test_demo01.py::test_demo02 PASSED                                                                                                                                [ 18%]
test_demo01.py::test_demo03 PASSED                                                                                                                                [ 27%]
test_demo01.py::test_demo04 PASSED                                                                                                                                [ 36%]
test_demo01.py::test_demo05 PASSED                                                                                                                                [ 45%]
test_demo01.py::test_demo06 PASSED                                                                                                                                [ 54%]
test_demo01.py::test_demo07 PASSED                                                                                                                                [ 63%]
test_demo01.py::test_demo08 PASSED                                                                                                                                [ 72%]
test_demo01.py::test_demo09 PASSED                                                                                                                                [ 81%]
test_demo01.py::test_demo10 PASSED                                                                                                                                [ 90%]
test_demo01.py::test_demo11 PASSED                                                                                                                                [100%]

========================================================================== slowest durations ===========================================================================
1.01s call     test_demo01.py::test_demo10
0.91s call     test_demo01.py::test_demo09
0.81s call     test_demo01.py::test_demo08
0.71s call     test_demo01.py::test_demo07
0.60s call     test_demo01.py::test_demo06
0.51s call     test_demo01.py::test_demo05
0.40s call     test_demo01.py::test_demo04
0.30s call     test_demo01.py::test_demo03
0.21s call     test_demo01.py::test_demo02
0.11s call     test_demo01.py::test_demo01
0.00s setup    test_demo01.py::test_demo01
0.00s setup    test_demo01.py::test_demo06
0.00s setup    test_demo01.py::test_demo08
0.00s setup    test_demo01.py::test_demo10
0.00s teardown test_demo01.py::test_demo01
0.00s teardown test_demo01.py::test_demo11
0.00s setup    test_demo01.py::test_demo04
0.00s teardown test_demo01.py::test_demo02
0.00s teardown test_demo01.py::test_demo07
0.00s teardown test_demo01.py::test_demo10
0.00s teardown test_demo01.py::test_demo03
0.00s teardown test_demo01.py::test_demo04
0.00s teardown test_demo01.py::test_demo08
0.00s teardown test_demo01.py::test_demo06
0.00s setup    test_demo01.py::test_demo09
0.00s setup    test_demo01.py::test_demo02
0.00s teardown test_demo01.py::test_demo09
0.00s setup    test_demo01.py::test_demo05
0.00s setup    test_demo01.py::test_demo03
0.00s setup    test_demo01.py::test_demo07
0.00s setup    test_demo01.py::test_demo11
0.00s teardown test_demo01.py::test_demo05
0.00s call     test_demo01.py::test_demo11
========================================================================== 11 passed in 5.63s ==========================================================================

三、显示所有耗时大于t秒的用例

(1)使用 pytest --durations=0 --durations-min=0.5 即可显示所有耗时大于0.5秒的用例

$ pytest --durations=0 --durations-min=0.5
========================================================================= test session starts ==========================================================================
platform win32 -- Python 3.9.7, pytest-6.2.5, py-1.10.0, pluggy-1.0.0
rootdir: D:\src\blog\tests\demo02
plugins: allure-pytest-2.9.43, caterpillar-pytest-0.0.2, forked-1.3.0, rerunfailures-10.1, xdist-2.3.0
collected 11 items                                                                                                                                                      

test_demo01.py ...........                                                                                                                                        [100%]

========================================================================== slowest durations ===========================================================================
1.01s call     test_demo01.py::test_demo10
0.91s call     test_demo01.py::test_demo09
0.81s call     test_demo01.py::test_demo08
0.71s call     test_demo01.py::test_demo07
0.61s call     test_demo01.py::test_demo06
0.51s call     test_demo01.py::test_demo05

(27 durations < 0.5s hidden.  Use -vv to show these durations.)
========================================================================== 11 passed in 5.63s ==========================================================================
目录
相关文章
|
7天前
|
存储 Python
Python自动化脚本编写指南
【10月更文挑战第38天】本文旨在为初学者提供一条清晰的路径,通过Python实现日常任务的自动化。我们将从基础语法讲起,逐步引导读者理解如何将代码块组合成有效脚本,并探讨常见错误及调试技巧。文章不仅涉及理论知识,还包括实际案例分析,帮助读者快速入门并提升编程能力。
27 2
|
9天前
|
运维 监控 Python
自动化运维:使用Python脚本简化日常任务
【10月更文挑战第36天】在数字化时代,运维工作的效率和准确性成为企业竞争力的关键。本文将介绍如何通过编写Python脚本来自动化日常的运维任务,不仅提高工作效率,还能降低人为错误的风险。从基础的文件操作到进阶的网络管理,我们将一步步展示Python在自动化运维中的应用,并分享实用的代码示例,帮助读者快速掌握自动化运维的核心技能。
23 3
|
15天前
|
运维 监控 应用服务中间件
自动化运维:如何利用Python脚本提升工作效率
【10月更文挑战第30天】在快节奏的IT行业中,自动化运维已成为提升工作效率和减少人为错误的关键技术。本文将介绍如何使用Python编写简单的自动化脚本,以实现日常运维任务的自动化。通过实际案例,我们将展示如何用Python脚本简化服务器管理、批量配置更新以及监控系统性能等任务。文章不仅提供代码示例,还将深入探讨自动化运维背后的理念,帮助读者理解并应用这一技术来优化他们的工作流程。
|
1月前
|
测试技术
自动化测试项目学习笔记(五):Pytest结合allure生成测试报告以及重构项目
本文介绍了如何使用Pytest和Allure生成自动化测试报告。通过安装allure-pytest和配置环境,可以生成包含用例描述、步骤、等级等详细信息的美观报告。文章还提供了代码示例和运行指南,以及重构项目时的注意事项。
178 1
自动化测试项目学习笔记(五):Pytest结合allure生成测试报告以及重构项目
|
16天前
|
运维 监控 Linux
自动化运维:如何利用Python脚本优化日常任务##
【10月更文挑战第29天】在现代IT运维中,自动化已成为提升效率、减少人为错误的关键技术。本文将介绍如何通过Python脚本来简化和自动化日常的运维任务,从而让运维人员能够专注于更高层次的工作。从备份管理到系统监控,再到日志分析,我们将一步步展示如何编写实用的Python脚本来处理这些任务。 ##
|
20天前
|
运维 Prometheus 监控
自动化运维之路:从脚本到DevOps
【10月更文挑战第25天】在数字化时代的浪潮中,运维不再是简单的服务器管理,而是成为了企业竞争力的核心。本文将带你走进自动化运维的世界,探索如何通过技术手段提升效率和稳定性,以及实现快速响应市场的能力。我们将一起学习如何从基础的脚本编写进化到全面的DevOps实践,包括工具的选择、流程的优化以及文化的建设。无论你是运维新手还是资深专家,这篇文章都将为你提供有价值的见解和实用的技巧。
18 3
|
22天前
|
JSON 测试技术 持续交付
自动化测试与脚本编写:Python实践指南
自动化测试与脚本编写:Python实践指南
25 1
|
24天前
|
数据采集 机器学习/深度学习 搜索推荐
Python自动化:关键词密度分析与搜索引擎优化
Python自动化:关键词密度分析与搜索引擎优化
|
1月前
|
人工智能 运维 Devops
自动化运维之路:从脚本到DevOps的转变
【10月更文挑战第7天】在这篇文章中,我们将一起探索自动化运维的演变历程,从最初的简单脚本到现代的DevOps实践。我们将深入理解自动化如何改变了运维工作的本质,并讨论实现这一转变的关键技术和策略。文章将不包含代码示例,而是聚焦于理念、工具和方法论的介绍,旨在为读者提供一个全面的自动化运维框架视图。
|
1月前
|
测试技术 Python
自动化测试项目学习笔记(四):Pytest介绍和使用
本文是关于自动化测试框架Pytest的介绍和使用。Pytest是一个功能丰富的Python测试工具,支持参数化、多种测试类型,并拥有众多第三方插件。文章讲解了Pytest的编写规则、命令行参数、执行测试、参数化处理以及如何使用fixture实现测试用例间的调用。此外,还提供了pytest.ini配置文件示例。
26 2