pytest第二版 进阶学习

pytest-进阶 一、什么是自动化测试 框架? (1)测试组长针对某一个项目开发的代码框架,这个框架封装了很多的基础模块,报告模块等等 (2)作用降低人工干预、提高测试效率、增加代码重用性 单元测试是自动化测试框架的一部分 自动化框架还包括: 数据驱动 关键词驱动 全局配置文件的封装 日志监控 selenium和request二次封装 断言 白搞邮件 更多 注pytest是unittest的封装与改进,pytest更加强大 二、自动化前置条件 pytest框架实现一些前后置处理(固件,夹具),常用三种,用例执行之前,用例 阅读详情

pytest 框架实现一些前后置(固件,夹具)的处理,常用三种。

一、setup/teardown,setup_class/teardown_class

为什么需要这些功能
比如: web自动化执行用例之前, 需要打开浏览器, 执行之后需要关闭浏览器

import pytest

# 所有的用例之前都会执行一次
def setup():
    print('\n在执行测试用例之前初始化的代码: 打开浏览器')
    

# 在类中只会执行一次
def setup_class():
    print('\n在执行每个类之前的初始化工作')


@pytest.mark.smoke
def test_html_001():
    print('这是一个html的测试函数')


def test_html_002():
    print('这是一个html_002的测试函数')


# 所有的用例执行之后执行一次
def teardown():
    print('\n在执行测试用例之后的扫尾的代码 关闭浏览器')
    
# 最后的扫尾工作,只执行一次
def teardown_class():
    print('\n在每个类执行后的扫尾的工作: 比如销毁日志,销毁链接')
二、使用fixture装饰器来实现部分用例的前后置

装饰器
@pytest.fixture(scope=’’, name=’’, params=’’, autouse=’’, ids=’’)

  1. scope表示的是被@pytest.fixture标记的方法的作用域,默认为function, 还有class, module, package/session
  2. params: 参数化
  3. autouse: 自动使用,默认为false
  4. ids: 当使用params参数化的时候,给每一个值设置一个变量
  5. name: 给表示的是被@pytest.fixture标记的方法取一个别名(当取了别名之后, 那么原来的名称就不用了)

import pytest


@pytest.fixture(scope='function', name='project', params=['成龙', '甄子丹', '李连杰'], autouse=True, ids=['cl', 'zzd', 'llj'])
def my_fixture_01(request):
    print('这是前后置的方法,可以实现部分以及全部用例的前后置')

    yield request.param

    print('只是后置的方法')


class TestFixture:
    def test_fixture(self):
        print('这是一个test_fixture的测试函数')


def test_fixture_001(project):
    print('这是一个test_fixture_001的测试函数  '+ str(my_fixture_01))

执行结果

src/html_web/test_fixture.py::TestFixture::test_fixture[cl] 这是前后置的方法,可以实现部分以及全部用例的前后置
这是一个test_fixture的测试函数
PASSED只是后置的方法

src/html_web/test_fixture.py::TestFixture::test_fixture[zzd] 这是前后置的方法,可以实现部分以及全部用例的前后置
这是一个test_fixture的测试函数
PASSED只是后置的方法

src/html_web/test_fixture.py::TestFixture::test_fixture[llj] 这是前后置的方法,可以实现部分以及全部用例的前后置
这是一个test_fixture的测试函数
PASSED只是后置的方法

src/html_web/test_fixture.py::test_fixture_001[cl] 这是前后置的方法,可以实现部分以及全部用例的前后置
这是一个test_fixture_001的测试函数  <function my_fixture_01 at 0x7fb1d92e9170>
PASSED只是后置的方法

src/html_web/test_fixture.py::test_fixture_001[zzd] 这是前后置的方法,可以实现部分以及全部用例的前后置
这是一个test_fixture_001的测试函数  <function my_fixture_01 at 0x7fb1d92e9170>
PASSED只是后置的方法

src/html_web/test_fixture.py::test_fixture_001[llj] 这是前后置的方法,可以实现部分以及全部用例的前后置
这是一个test_fixture_001的测试函数  <function my_fixture_01 at 0x7fb1d92e9170>
PASSED只是后置的方法

=============================================================== 6 passed, 9 deselected in 0.04s ===============================================================
三、通过conftest.py和@pytest.fixture()结合使用实现全局的前置应用(比如:项目的全局登陆,模块的全局处理)
  1. conftest.py文件是单独存放的一个家具配置文件,名称是不能改的
  2. 用处可以在不同的py文件中使用fixture函数
  3. conftest.py为全局配置,原则上需要和运行的用例放在同一层,并且不做任何import倒入的操作

总结: setup/teardown setup_class/teardown_clss它是作用于所有的用例或者类
@pytest.fixture() 它的作用是既可以部分也可以全部前后置
conftest.py 和 @pytest.fixtrue()结合使用,作用于全局的前后置

四、pytest结合allure-pytest插件生成allure测试报告
  1. 下载,解压,配置path路径

    https:github.com/allure-framework/allure2/releases
    path路径配置
    验证: allure -version
    问题: dos可以验证但是pycharm验证失败,需重启pycharm

  2. 生成allure报告: os.system(‘allure generate ./temp -o ./report --clean’)
    1. allure generate 命令,固定写法
    2. ./temp 临时的json格式报告的路径
    3. -o 输出output
    4. ./report 生成的allure报告的路径
    5. –clean 清空./report 路径原来的报告
2、pytest核心功能(进阶用法) 自定义标记得用途是筛选用例,只执行部分用例,共分为三个步骤在pytest.init注册标记[pytest]addopts = -vs # addopts 用于指定默认的命令行选项markers =login: 登录相关db: 数据库相关upload: 上传相关在用例中通过装饰器添加标记print('使用数据库')在命令行参数中加-m使用标记[pytest]# -v(verbose 模式)用于显示详细的测试执行信息(包括每个测试用例的名称和状态) 阅读详情

相关推荐

【pytest进阶】pytest之钩子函数

钩子hook,顾名思义,可以理解是一个挂钩,作用是有需要的时候挂一个东西上去。具体的解释是:钩子函数是把我们自己实现的hook函数在某一时刻挂接到目标挂载点上。

专注自动化、性能测试、测试架构学习交流 1277

Pytest自动化测试框架进阶使用教程

命令灵活:对于setup,teardown可以省略

测试官 1091

pytest 完整学习指南

pytest 学习指南摘要 pytest 是一个功能强大的 Python 测试框架,具有简单易用、自动测试发现、丰富断言和强大插件生态等特点。本指南全面介绍了 pytest 的安装配置、基础用法、高级功能和最佳实践。 主要内容包括: 安装配置:基础安装、开发环境设置和 IDE 配置 基础测试:编写第一个测试用例,解释测试发现机制 核心功能:断言处理、异常测试、测试标记和跳过 高级特性:Fixture 系统、参数化测试、HTML 和 Allure 报告 。

qq_48107900的博客 1493

Python进阶|pytest测试框架

Pytest测试框架具有简单易用、灵活多样、插件机制、断言机制和报告机制等特点,被广泛应用于Python项目的测试工作中。通过掌握pytest测试框架的基本用法和高级用法,可以编写出高效、可靠的测试用例,提高软件的质量和稳定性。

vangoghlaam的博客 442

【测试】Pytest

本文系统对比了unittest与pytest,突出pytest在自动发现、断言重写、fixture依赖注入、参数化测试及插件扩展等方面的显著优势。通过conftest.py实现跨文件共享,结合scope控制生命周期,提升测试效率与可维护性,推荐用于现代Python测试实践。

你的每一个关注每一次观看都会支持我越来越好,关注能加快我的更新速度~ 1759

python pytest进阶之conftest.py详解

主要介绍了python pytest进阶之conftest.py详解,如果我们在编写测试用的时候,每一个测试文件里面的用例都需要先登录后才能完成后面的操作,那么们该如何实现呢?这就需要我们掌握conftest.py文件的使用了,需要的朋友可以参考下

pytest框架进阶自学系列 | pytest初体验

书籍来源:房荔枝 梁丽丽《pytest框架与自动化测试应用》

团爸讲算法 491

PSI5协议技术文档与驱动开发指南

• 供电与数据复用:ECU通过双绞线为传感器提供稳压(典型值5V-11V),同时检测线路电流变化实现数据传输。• 同步信号:ECU发送3.5V电压脉冲(上升沿触发传感器响应),用于时序同步。• 安全气囊:PSI5-P模式实现多碰撞传感器同步采样(响应时间<10ms)• CRC-3(3位):ASIL-B以上功能安全要求(如动力总成传感器)• 奇偶校验(1位):适用于低安全等级场景(如PSI5-P10P模式)• 典型应用:PSI5-P(并行总线)、PSI5-U(通用总线)

u012733413的博客 2867

python的测试框架 - pytest 进阶项目版

被测函数:download_from_gitlab() def download_from_gitlab(url, cwd): """Download two SConscript files :param url: download file url (gitlab), str :param down_file: download file name, str :param cwd: current path, str :return: """ .

lebhoryi 3040

Flink项目基础配置指南

在大数据处理领域,Apache Flink凭借强大的实时流处理和批处理能力,成为众多开发者的首选工具。在日常工作中,开发Flink Jar任务是常见需求,但每次都需重复配置日志、梳理pom依赖、设置打包插件等,流程繁琐且易出错。为提升开发效率,减少重复劳动,将这些基础配置进行整理归纳十分必要。本文将围绕Flink项目的本地日志配置、pom依赖及插件配置展开详细介绍,为开发者提供一套可直接复用的基础配置方案,助力Flink项目高效开发。在Flink项目中,日志是了解任务运行状态、排查问题的重要依据。本地日志配

qq_42773076的博客 1210

Moveit +Gazebo:搭建单臂机械臂仿真平台

Moveit +Gazebo:搭建单臂机械臂仿真平台

magic_invaid的博客 5290

【pytest进阶】pytest详解及进阶使用

pytest参数化与配置指南 pytest提供了强大的参数化功能,主要通过@pytest.mark.parametrize装饰器实现,支持单参数、多参数以及参数组合测试。测试参数可通过列表、元组或外部文件(JSON/Excel/YAML)传入。pytest.ini作为配置文件,可以定义测试行为,包括命令行参数(addopts)、测试文件匹配规则(python_files)、标签注册(markers)等。

专注自动化、性能测试、测试架构学习交流 1090

102、栅极驱动芯片选型与设计

文章摘要 本文分享了栅极驱动芯片选型与设计的实战经验。通过一次因驱动芯片选型不当导致的炸管事故,作者总结了栅极驱动芯片选型的五个关键参数:峰值驱动电流、驱动电压范围、传播延迟匹配、欠压锁定和隔离等级。文章详细分析了自举电路设计中的常见陷阱,以及栅极电阻对开关特性的影响,并强调了PCB布局布线的重要性。最后,作者提供了七条实用建议,包括避免通用型驱动芯片、关注CMTI参数、使用插件电阻等。核心观点是:栅极驱动设计需要综合考虑参数匹配、电路布局和实际调试,示波器实测波形是验证设计的唯一标准。

2401_88858637的博客 44

《pytest测试实战》新手友好版——第二章 命令行选项

第二章 命令行选项 在前一章节中,咱们已经用过了-v(啰嗦模式)选项,其实pytest还有很多选项,可以用pytest --help查看所有选项,下面只讲解一部分常用的选项。举例所用的代码是上一章节创建的,忘记的同学可以翻看前一章节,这里简单说明下: # F:\Pytest_learning\ch01\test_one.py def test_passing(...

幼儿园 6852

Zephyr内核——内存管理——内存堆

Zephyr提供了一组允许线程动态分配内存。

wayne2018的博客-心情驿站 772

Apple Store 上架过包:iOS审核4.3被拒原因分析与解决修改方案

Apple Store 上架过包:iOS审核4.3被拒原因分析与解决修改方案

专业解决各种上架过包问题,专业团队专业处理 751

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

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

幼儿园 1万+

芯片原厂linux驱动开发的分享

大家好,我是XX,来自湖南XX学院,电子信息18级,也曾在创新基地控制组学习过两三年,毕业后就职于一家芯片原厂的解决方案部,担任驱动工程师的职位,算上实习期,我的工作时长已有两年。在此我想将这两年期间学习与积累到的一些经验输出出来,与大家一同分享。知识面有限,只能简单介绍一些驱动开发方向的一些经验,且由于经验尚浅,文中难免会有一些疏漏和错误之处,还请大家积极地批评指正。

嵌入式技术开发 849

Pytest测试框架基础及进阶

Pytest是Python一款三方测试框架,用于编写和运行单元测试、集成测试和功能测试。Pytest测试框架具有简单、灵活、易于扩展等特点,被广泛应用于Python项目的测试工作中。简单易用:Pytest测试框架的API简单易用,可以快速编写测试用例。灵活多样:Pytest测试框架支持多种测试方式,包括函数式测试、类式测试、参数化测试、fixture测试等。插件机制:Pytest测试框架支持插件机制,可以通过插件扩展测试框架的功能。

xt1989288的博客 753

VTK实战完整教程介绍

该专栏以VTK提供的Example为基础,讲解VTK中的相关接口和使用方法。订阅该专栏,带你了解所有VTK的功能,以便VTK更好的解决工作中遇到的问题。一起学习起来吧!

qq_40041064的博客 2506

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

【pytest进阶】Pytest之conftest详解

摘要:conftest.py是pytest框架中用于共享测试数据、参数和方法的配置文件。它具有层级化作用域,子目录的conftest.py优先级更高,支持全局和局部配置。主要功能包括:1) 定义fixture实现数据共享;2) 通过scope参数控制fixture执行范围(session/module/class/function);3) 使用yield或addfinalizer实现后置处理;4) 支持参数传递,包括用例参数化和fixture参数传递。典型应用场景包括共享token、测试数据和配置信息。示例

专注自动化、性能测试、测试架构学习交流 1794

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Pytest第二章(操作指南1)

可以通过实现钩子来添加您自己的详细解释。返回失败的断言表达式比较的解释。如果没有自定义解释,则返回None;否则返回一个字符串列表。这些字符串将通过换行符连接,但任何字符串中的换行符将被转义。请注意,除了第一行外的所有行都会稍微缩进,意图是让第一行成为摘要。参数- pytest 配置对象。op (str)- 操作符,例如"==", "!。- 左操作数。- 右操作数。在 confest 插件中使用任何 confest 文件都可以实现这个钩子。

liluo0815481的博客 1352

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

如何在pytest-recording中注册自定义matcher?pytest_recording_configure钩子进阶详解

pytest-recording 是一个基于 VCR.py 的 pytest 插件,核心能力是**录制和回放(replay)HTTP 流量**,让接口测试完全摆脱对真实网络的依赖。当默认的请求匹配规则不够用时,你可以通过 `pytest_recording_configure` 钩子拿到插件内部使用的 VCR 实例,注册一个自定义 matcher(匹配器)来精确控制回放行为。本文用最通俗的方式讲清

gitblog_01036的博客 687

pytest进阶之xunit fixture

本文介绍了pytest框架中与unittest类似的fixture使用方法,涵盖四个级别:1)function级别(setup_function/teardown_function)在每个测试函数前后执行;2)method级别(setup_method/teardown_method)在类中每个测试方法前后执行;3)class级别(setup_class/teardown_class)在整个测试类前后执行一次;4)module级别(setup_module/teardown_module)在整个测试模块前后

2301_78843735的博客 1552
上一篇: pytest第一版 入门学习
下一篇: python判断字符是否为数字或字母
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一叶知秋的BLOG

创作不易 请多多关注

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值