pytest-第一次学习梳理

Pytest与Jenkins实战:构建自动化测试与持续集成工作流 单元测试是软件质量保障的基石,它通过验证代码最小单元的准确性来确保功能正确性。其核心原理在于隔离测试、快速反馈和自动化执行,能有效提升代码可靠性与可维护性。在工程实践中,一个强大的单元测试框架是实现这一目标的关键技术支撑。Pytest作为Python生态中主流的测试框架,凭借其零样板代码、灵活的Fixture机制和丰富的插件生态,极大地简化了测试编写与管理,提升了测试效率。持续集成(CI)则将自动化测试的价值进一步放大,它通过自动化流水线,确保每次代码变更都能触发完整的构建与测试流程,从而实现快速的质量反馈 阅读详情

内容全部参考:https://cloud.tencent.com/developer/search/article-pytest文档50

1-环境准备与入门

2-用例运行规则

文件名以test_.py文件和test.py
以test_开头的函数
以Test开头的类
以test_开头的方法
所有的包pakege必须要有__init
_.py文件

3-pycharm运行pytest

pycharm设置pytest
新建一个工程后,左上角file->Setting->Tools->Python Integrated Tools->项目名称->Default test runner->选择py.test

4-测试用例setup和teardown

用例运行级别
模块级(setup_module/teardown_module)开始于模块始末,全局的
函数级(setup_function/teardown_function)只对函数用例生效(不在类中)
类级(setup_class/teardown_class)只在类中前后运行一次(在类中)
方法级(setup_method/teardown_method)开始于方法始末(在类中)
类里面的(setup/teardown)运行在调用方法的前后

5-fixture之conftest.py

firture相对于setup和teardown来说应该有以下几点优势
命名方式灵活,不局限于setup和teardown这几个命名
conftest.py 配置里可以实现数据共享,不需要import就能自动找到一些配置
scope=”module” 可以实现多个.py跨文件共享前置
scope=”session” 以实现多个.py跨文件使用一个session来完成多个用例

6-fixture之yield实现teardown

7-生成html报告

安装:pip install pytest-html
执行:打开cmd,cd到需要执行pytest用例的目录,执行指令:pytest —html=report.html
执行完之后,在当前目录会生成一个report.html的报告文件,显示效果如下

8-html报告报错截图+失败重跑

9-参数化parametrize

  1. pytest.mark.parametrize装饰器可以实现测试用例参数化。
# content of test_expectation.py

# coding:utf-8
# ** 作者:上海-悠悠 QQ交流群:588402570**

import pytest
@pytest.mark.parametrize("test_input,expected",
                         [ ("3+5", 8),
                           ("2+4", 6),
                           ("6 * 9", 42),
                         ])
def test_eval(test_input, expected):
    assert eval(test_input) == expected

if __name__ == "__main__":
    pytest.main(["-s", "test_canshu1.py"])

运行结果

================================== FAILURES ===================================
_____________________________ test_eval[6 * 9-42] _____________________________

test_input = '6 * 9', expected = 42

    @pytest.mark.parametrize("test_input,expected",
                             [ ("3+5", 8),
                               ("2+4", 6),
                               ("6 * 9", 42),
                             ])
    def test_eval(test_input, expected):
>       assert eval(test_input) == expected
E       AssertionError: assert 54 == 42
E        +  where 54 = eval('6 * 9')

test_canshu1.py:11: AssertionError
===================== 1 failed, 2 passed in 1.98 seconds ======================
  1. 也可以标记单个测试实例在参数化,例如使用内置的mark.xfail
  2. 获得多个参数化参数的所有组合,可以堆叠参数化装饰器

10-命令行传参addoption

命令行参数是根据命令行选项将不同的值传递给测试函数,比如平常在cmd执行”pytest —html=report.html”,这里面的”—html=report.html“就是从命令行传入的参数
对应的参数名称是html,参数值是report.html

contetest配置参数

11-assert断言

pytest里面断言实际上就是python里面的assert断言方法,常用的有以下几种

assert xx 判断xx为真
assert not xx 判断xx不为真
assert a in b 判断b包含a
assert a == b 判断a等于b
assert a != b 判断a不等于b

12-skip跳过用例

pytest.mark.skip可以标记无法在某些平台上运行的测试功能,或者您希望失败的测试功能

@pytest.mark.skip(reason="no way of currently testing this")
def test_the_unknown():
    ...
def test_function():
    if not valid_config():
        pytest.skip("unsupported configuration")

概要
1.无条件地跳过模块中的所有测试:
pytestmark = pytest.mark.skip(“all tests still WIP”)

2.根据某些条件跳过模块中的所有测试
pytestmark = pytest.mark.skipif(sys.platform == “win32”, “tests for linux˓→ only”

3.如果缺少某些导入,则跳过模块中的所有测试
pexpect = pytest.importorskip(“pexpect”)

16-标记失败xfail

pytest里面用xfail标记用例为失败的用例,可以直接跳过。实现基本思路
把登录写为前置操作
对登录的账户和密码参数化,参数用canshu = [{“user”:”amdin”, “psw”:”111”}]表示
多个用例放到一个Test_xx的class里
test_01,test_02, test_03全部调用fixture里面的login功能
test_01测试登录用例
test_02和test_03执行前用if判断登录的结果,登录失败就执行,pytest.xfail(“登录不成功, 标记为xfail”)

18-配置文件pytest.ini

pytest配置文件可以改变pytest的运行方式,它是一个固定的文件pytest.ini文件,读取配置信息,按指定的方式去运行。
pytest里面有些文件是非test文件

pytest.ini pytest的主配置文件,可以改变pytest的默认行为
conftest.py 测试用例的一些fixture配置
init.py 识别该文件夹为python的package包
tox.ini 与pytest.ini类似,用tox工具时候才有用
setup.cfg 也是ini格式文件,影响setup.py的行为

19-doctest测试框架

前言

doctest从字面意思上看,那就是文档测试。doctest是python里面自带的一个模块,它实际上是单元测试的一种。
官方解释:doctest 模块会搜索那些看起来像交互式会话的 Python 代码片段,然后尝试执行并验证结果doctest测试用例可以放在两个地方
函数或者方法下的注释里面
模块的开头

>>> multiply(4, 3)
    12
>>> multiply('a', 3)
    'aaa'
def multiply(a, b):
    """
    fuction: 两个数相乘

# 22-pytest分布式执行(pytest-xdist)
    >>> multiply(4, 3)
    12
    >>> multiply('a', 3)
    'aaa'
    """
    return a * b
if __name__ == '__main__':
    import doctest
    doctest.testmod(verbose=True)

26-conftest.py作用范围

27-运行上次失败用例(--lf 和 --ff)

28-重复执行用例(pytest-repeat)

29-allure-pytest(报告形式)

30-功能用例与自动化用例完美对接(allure)

31-allure标记用例级别severity

32-allure描述用例详细讲解

33-Hooks函数获取用例执行结果(pytest_runtest_makereport)

34-Hooks函数改变用例执行顺序(pytest_collection_modifyitems)

35-Hooks函数之统计测试结果(pytest_terminal_summary)

36-断言失败后还能继续执行pytest-assume

37-自定义用例顺序(pytest-ordering)

38-allure.setp添加测试用例步骤

39-参数化(parametrize)结合allure.title()生成不同标题报告

40-pytest.ini配置用例查找规则(面试题)

41-参数化 ids 用例描述为中文时控制台输出unicode

42-fixture参数化params

43-元数据使用(pytest-metadata)

44-allure.dynamic动态生成用例标题

45-allure添加环境配置(environment)

46-关于https请求警告问题

47-allure报告添加用例失败截图

Python自动化测试工具库实战指南:从pytest到Selenium的完整技术栈 自动化测试是现代软件工程保障质量与效率的核心实践,其本质是通过脚本模拟用户操作,对软件功能进行系统化验证。其核心原理在于将重复、易错的手工测试转化为可重复执行、快速反馈的代码,从而在持续集成与交付流程中实现快速的质量门禁。从技术价值看,一套设计良好的自动化测试体系能显著提升测试覆盖率、加速回归测试、并及早发现缺陷,是支撑敏捷开发和DevOps的关键环节。在应用场景上,自动化测试广泛覆盖单元测试、接口测试、UI测试及性能测试等多个层次。本文聚焦于Python技术生态,深入解析如何将pytest测试框架与Sel 阅读详情

相关推荐

【Pytest】2026 学习总结

内置标记:不需要在pytest.ini配置文件中去配置。是pytest自带的。

白骨梦儿 43

Pytest中测试结果收集:pytest_terminal_summary!

首先,我们需要了解pytest的插件钩子机制。pytest是一个非常灵活的测试框架,它允许用户通过插件来扩展其功能。每一个插件都可以实现一些钩子函数,这些函数在pytest的特定运行阶段被调用,从而实现对pytest行为的定制化。是pytest的一个插件钩子,用于在所有的测试运行完成后向终端报告总结信息。在编写pytest插件或者定制化pytest测试报告的时候,你可能会用到这个钩子。pytest_terminal_summary是一个特殊的钩子方法,它是pytest测试框架的一部分。

m0_58026506的博客 1574

APM无人船测绘实战:从RTK、测深仪到图传的完整系统集成指南

本文提供了一套完整的APM无人船测绘系统集成实战指南。从RTK模块配置、测深仪数据同步到图传系统接入,详细解析了硬件选型、接线、软件参数调试及QGC地面站任务规划的全流程,旨在帮助用户将分散的部件整合为可自主执行水下地形测绘的可靠工具。

rr23456的博客 520

Python测试框架pytest(11)Hooks函数 - pytest_terminal_summary统计测试结果

当用例执行完成后,希望获取到执行的结果,方便了解用例的执行情况,这时候就可以使用 pytest_terminal_summary 来进行测试结果的统计(可以拿到所有的执行结果)。 pytest_terminal_summary 源码: 参数: terminalreporter(内部使用的终端测试报告对象) exitstatus(返回给操作系统的返回码) config(pytest 的 config 对象) 示例一:正常情况 创建conftest.py文件,py

Meng 3578

毕设分享|基于16单片机的指纹识别电子密码锁设计

我们今天的工作生活中,很多的场合都需要身份的认证,而传统的基于标志的身份认证技术由于受到证件伪造以及密码破解等手段的威胁,逐渐表现得有些力不从心。怎样保护自己的重要文件资料,如何保证自己的隐私不被泄露?在传统的身份认证中,我们往往使用密码加密法,但是这种方法只是"防君子不防小人"。在高明的黑客眼里,由几个字符组成的密码脆弱得不堪一击。现在,科技的发展让我们有了新的选择——生物识别技术。将生物识别技术应用于笔记本、门锁等方面,可以对文件、财产起保护作用,并且可以进行身份识别。

Sen_091的博客 1021

手把手教你给STM32F103移植LVGL触摸驱动(基于野火开发板,附完整代码)

本文详细介绍了如何在野火STM32F103开发板上移植LVGL触摸驱动,提供从环境准备到代码实现的完整指南。通过XPT2046触摸芯片的底层驱动集成和LVGL输入设备接口配置,开发者可以快速实现触摸功能,并解决常见问题如触摸无响应、坐标偏移等。

weixin_30856725的博客 1021

【pytest】Hooks函数之统计测试结果(pytest_terminal_summary)

前言用例执行完成后,我们希望能获取到执行的结果,这样方便我们快速统计用例的执行情况。也可以把获取到的结果当成总结报告,发邮件的时候可以先统计测试结果,再加上html的报告。关于TerminalReporter类可以在_pytest.terminal中查看到TerminalReporter部分代码。

shanmao001的博客 2026

汽车级智能栅极驱动器深度解析 | 连载01:DRV871x-Q1系列产品架构与核心特性

集成度:单芯片集成多通道驱动器、电源管理、电流检测智能化:自适应控制算法,减少外部元件可靠性:多重保护机制,满足汽车级要求灵活性:SPI和硬件两种接口,适应不同应用需求。

VehSwHwDeveloper的博客 1153

pytest文档35-Hooks函数之统计测试结果(pytest_terminal_summary)

用例执行完成后,我们希望能获取到执行的结果,这样方便我们快速统计用例的执行情况。也可以把获取到的结果当成总结报告,发邮件的时候可以先统计测试结果,再加上html的报告。

nhb687096的博客 1162

Shopee App加密算法逆向实战:从libshpssdk.so到x-sap-ri的生成机制

本文详细解析了Shopee App核心加密参数x-sap-ri的生成机制。通过逆向分析libshpssdk.so动态库,揭示了其采用9套算法动态切换的复杂签名逻辑,并分享了从抓包定位、Frida动态调试到Unidbg模拟执行的全过程实战经验,为移动应用安全研究提供了完整的技术路径。

weixin_29323551的博客 1328

lammps多晶正弦粗糙界面建模

其中,30可以理解为正弦曲线的幅度,150为正弦曲线的基准坐标值,80控制周期,改变参数多试试就能找到规律。很久之前介绍过lammps粗糙界面建模,主要是在lammps中进行一维和二维的正弦粗糙面建模。运行完成后,会生成final.data,这个模型即为上表面为正弦波动的粗糙界面。新建1.py文件,粘贴下面内容后,运行:python 1.py。多晶需要在atomsk中进行,因此上述的方法就不再适用。最近有学员咨询多晶模型的正弦粗糙界面建模应该如何实现。在cmd窗口按顺序运行以下命令创建多晶模型。

lammps_jiayou的博客 389

《pytest测试实战》新手友好版——第一章 pytest入门

序言 当当上买了的Brian Okkend 的《pytest测试实战》(《Python Testing with pytest》),就是画着火箭的那本,看完一遍确实对pytest有了更深一层的了解,但是总觉得有的地方翻译得不是很到位,一些例子也比较晦涩难懂,对于新手入门还是不大友好,然而市面上暂时又没有搜罗到更好一点的书了,所以打算自己以《pytest测试实战》为蓝本,用系列文章把里面的每一章都...

幼儿园 1万+

K230+canMV开发中常见的数据类型转换参考示例

【代码】K230+canMV开发中常见的数据类型转换参考示例。

weixin_47446386的博客 68

如何详细的理解pytest框架(通俗易懂版)

今天我们来讲讲pytest 框架(下期我们细讲selenim)首先我们梳理一下。

Up or Down 1374

光电二极管探测器电流信号处理与指令输出系统

本文提出了一种基于Python的光电二极管电流信号处理系统设计方案。该系统能够实时采集、处理光电二极管输出的电流信号,并根据预设阈值输出控制指令。系统采用模块化架构,包含数据采集、信号处理、阈值检测、指令生成等核心模块。其中数据采集模块提供了模拟器实现和硬件接口框架,支持噪声模拟和脉冲信号生成。系统设计考虑了实时性、可靠性和可扩展性,适用于光强测量、光电检测等多种应用场景。

huanghm88的专栏 1180

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

python pytest 学习笔记 Day02

Pytest缓存与测试管理技巧摘要 Pytest通过cacheprovider插件实现缓存功能,支持记录测试状态(--lf/--ff)和跨用例数据共享(cache fixture)。缓存目录自动生成,可用于快速重跑失败用例或传递登录Token等数据。测试预览(--collect-only)帮助验证测试集合,而多种跳过方式(@pytest.mark.skip、skipif、动态pytest.skip())能条件化忽略测试。结合缓存、标记和跳过策略,可构建高效工作流

a1105311342的博客 1114

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

pytest+playwright落地实战大纲

Pytest+Playwright落地框架实战

城下秋草‘s Blog 1319

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

pytest接口自动化测试框架搭建

由于用例中用到了@pytest.mark.httptest给用例打标,因此需要创建pytest.ini文件,并在里面添加markers = httptest,不然会有warning,说这个Mark有问题。因此框架需要能处理在运行用例前置和后置做一些动作,所以这里用到了conftest.py文件,内容如下:​​​​​​​。从Excel文件中读取数据的工具类:get_excel_data_utils.py(虽然本次框架中暂时未采用存放接口数据到Excel中,但也写了个工具类,需要的时候可以用)

chengxuyuznguoke的博客 1233

Python Pytest 学习笔记 Day01

Pytest中Setup/Teardown方法详解及参数使用指南 本文详细介绍了pytest中的setup和teardown方法机制,主要包括: 四个级别的初始化和清理方法:模块级、函数级、类级和方法级,分别说明其作用范围和适用场景 组合使用时从大到小的执行顺序规则 现代实践推荐使用更灵活的fixture替代传统setup/teardown 常用命令行参数说明: 输出控制参数(-v/-s/--tb) 测试筛选参数(-k/-m) 失败处理参数(--lf/--ff) 性能与报告参数(-n/--durations

a1105311342的博客 1892

解决pytest单元测试中pkgutil.ImpImporter缺失的兼容性问题

在Python开发中,模块导入系统是代码组织和复用的基础机制。Python通过import语句和标准库中的pkgutil等模块实现模块的动态加载和包管理。随着Python版本演进,其导入系统经历了多次重构,一些旧的内部API如pkgutil.ImpImporter在新版本中被移除,这导致了环境兼容性问题。这类问题的技术价值在于理解Python版本间API变更对依赖管理的影响,确保开发环境的稳定性。在实际应用场景中,当使用pytest等测试框架运行单元测试时,若依赖的库或插件代码引用了已移除的API,就会触发

weixin_30482383的博客 389

Pytest基础框架梳理(未完待续)

注:本文为学习笔记博,已成功搭建并在原基础上做了一些优化,框架源自:https://blog.youkuaiyun.com/tester_sc/article/details/118617901。

weixin_41522252的博客 440

【基于pytest接口自动化测试实现】

该项目基于pytest实现数据驱动接口请求、前后置接口断言;使用excel和yaml作为测试用例管理,包含接口基本信息、请求方法、header、body、前后置断言依据;使用pytest.ini作为项目配置文件,包含项目执行规则、邮箱配置、测试报告配置;使用allure生成测试报告,实现历史报告保存;

weixin_46043035的博客 1020

pytest常用命令

pytest独家使用手册 pytest真的是一个很方便的库,十分方便我们去进行自动化测试工作,结合我目前的工作场景来看,我没办法去用那些更好用的pytest的扩展工具,因为公司的堡垒机装新库很难,那么我就去看了一下pytest的原生的一些东西,首先就从pytest --help里面的开始进行一个梳理。 ...

weixin_43923968的博客 770
上一篇: web测试
下一篇: pytest-架构1
Alice__Time
博客等级 码龄9年 15粉丝 32原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值