首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么pytest覆盖率跳过了自定义异常消息断言?

pytest是一个Python的测试框架,用于编写和执行单元测试、集成测试和功能测试。它提供了丰富的功能和插件,可以帮助开发人员编写高效、可靠的测试代码。

在pytest中,覆盖率是通过插件pytest-cov来实现的。pytest-cov可以统计测试代码的覆盖率,并生成相应的报告。覆盖率报告显示了被测试代码中哪些部分被测试到了,哪些部分没有被测试到。

自定义异常消息断言是指在测试代码中,我们可以使用assert语句来判断某个异常是否被正确抛出,并且可以自定义异常消息。例如:

代码语言:txt
复制
with pytest.raises(MyCustomException) as exc_info:
    # 执行某个操作,期望抛出MyCustomException异常
    # 可以在这里添加自定义异常消息
    assert str(exc_info.value) == "自定义异常消息"

然而,pytest-cov插件在统计覆盖率时,会跳过这种自定义异常消息断言的代码。这是因为自定义异常消息断言通常是在测试代码中使用的,而测试代码本身不应该被计入覆盖率统计范围内。覆盖率主要关注被测试代码的覆盖情况,而不是测试代码本身的覆盖情况。

因此,pytest-cov默认会忽略测试代码中的自定义异常消息断言,以确保覆盖率报告更准确地反映被测试代码的覆盖情况。

如果你希望自定义异常消息断言也被计入覆盖率统计范围内,可以通过pytest-cov的配置选项进行设置。具体的配置方法可以参考pytest-cov的官方文档:pytest-cov官方文档

总结起来,pytest-cov插件在统计覆盖率时会跳过自定义异常消息断言的代码,这是为了确保覆盖率报告更准确地反映被测试代码的覆盖情况。如果需要包含自定义异常消息断言的代码,可以通过pytest-cov的配置选项进行设置。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

使用Pytest创建一个Python测试自动化项目

为什么选择Python? Python是当前最流行的编程语言之一。它为Web后端,数据科学笔记本,sysadmin脚本等提供支持。它的语法简洁,易读且优雅–非常适合初学者和专家。...pytest是Python最好的测试框架之一。它简单,可扩展且具有Python风格。测试用例是作为函数而不是类编写的。测试断言失败将与实际值一起报告。插件可以添加代码覆盖率,漂亮的报告和并行执行。...使用Python的本机 assert 语句代替自定义断言调用。 运行测试 让我们运行我们的新测试。...验证异常 pytest将未处理的异常视为测试失败。实际上,该 assert 语句仅引发异常以注册失败。如果我们要验证是否正确引发了异常该怎么办?...使用 与期望的异常类型,如下所示:pytest.raises def test_divide_by_zero(): with pytest.raises(ZeroDivisionError):

2K10

使用Pytest创建一个Python测试自动化项目

为什么选择Python? Python是当前最流行的编程语言之一。它为Web后端,数据科学笔记本,sysadmin脚本等提供支持。它的语法简洁,易读且优雅–非常适合初学者和专家。...pytest是Python最好的测试框架之一。它简单,可扩展且具有Python风格。测试用例是作为函数而不是类编写的。测试断言失败将与实际值一起报告。插件可以添加代码覆盖率,漂亮的报告和并行执行。...使用Python的本机 assert 语句代替自定义断言调用。 运行测试 让我们运行我们的新测试。...验证异常 pytest将未处理的异常视为测试失败。实际上,该 assert 语句仅引发异常以注册失败。如果我们要验证是否正确引发了异常该怎么办?...使用 与期望的异常类型,如下所示:pytest.raises def test_divide_by_zero(): with pytest.raises(ZeroDivisionError):

1.5K30
  • 如何使用Python进行单元测试

    尽管在一个测试用例中可能有很多断言。...我总是尝试使用单个断言。 原因是,当断言失败时,测试用例的执行就会停止。因此,您永远不会知道测试用例中的下一个断言是否成功。 使用pytest进行单元测试 在上一节中,我们使用了unittest模块。...最后,您可以使用标准的Python assert方法来代替自定义的方法。 测试装置 您还记得,单元测试模块使用setUp和tearDown来配置和构建测试中的单元。...pytest-sugar pytest-sugar改变pytest的默认外观和感觉。它会添加一个进度条,并立即显示失败的测试。 创建代码覆盖率报告 有一些工具可以创建代码覆盖率报告。...这个代码覆盖率报告显示了您的单元测试执行了哪些代码。 我使用Coverage和pytest-cov来创建代码覆盖率报告。覆盖率是度量代码覆盖率的通用包。

    2.8K20

    用Python进行单元测试

    用Python中的assert语句实现断言,并辅之以pytest中的方法,增强assert语句的表达,从而能输出更多的异常信息。...为了能准确定位到失败的位置,pytest会显示源码,并标记断言位置和实际的执行结果。此外,还自动输出测试内容。例如,上面的测试报告中显示,对3和4两个数字进行了测试,当测试4的时候失败。...,将显示有三个单元测试,它们都通过了: (venv) $ pytest ========================== test session starts ==================...为此,有一个概念、或者工具:代码覆盖率,它可以帮助开发者更好地实施单元测试。 再安装一个模块:pytest-cov,运用它,能够检测到测试的代码覆盖率。...(venv) $ pip install pytest-cov 执行命令pytest --cov=fizzbuzz,运行单元测试,注意命令行的参数列表中,声明了为fizzbuzz模块启用代码覆盖率跟踪

    3.2K20

    pytest文档11-assert断言

    ,会给出自己写的失败原因了E AssertionError: 判断a为偶数,当前a的值为:3 异常断言 为了写关于引发异常断言,可以使用pytest.raises作为上下文管理器,如下 #...,比如执行:1/0,预期结果是抛异常:ZeroDivisionError: division by zero,那我们要断言这个异常,通常是断言异常的type和value值了。...作者:上海-悠悠 QQ交流群:588402570** import pytest def test_zero_division(): '''断言异常''' with pytest.raises...# 断言异常value值 assert "division by zero" in str(excinfo.value) excinfo 是一个异常信息实例,它是围绕实际引发的异常的包装器...主要属性是.type、 .value 和 .traceback 注意:断言type的时候,异常类型是不需要加引号的,断言value值的时候需转str 在上下文管理器窗体中,可以使用关键字参数消息指定自定义失败消息

    1.1K40

    【单元测试】--工具与环境

    断言库: JUnit 4+版本引入了 Hamcrest 断言库,允许更灵活和自定义断言异常测试: JUnit 允许测试方法声明预期抛出的异常,以确保代码在错误情况下正确处理异常。...多种断言pytest 支持多种断言方式,包括标准 assert 语句、assert 方法以及丰富的 assert 插件,如 assert a == b、assert a > b、assert result...丰富的插件生态系统: pytest 提供了许多插件,可扩展测试框架的功能,包括测试覆盖率、HTML 报告、分布式测试等。...插件系统: pytest 具有强大的插件系统,允许用户自定义和扩展测试框架的功能。...丰富的插件生态系统: Mocha 拥有丰富的插件生态系统,可以用于扩展其功能,如测试覆盖率断言库等。

    37850

    Pytest系列(2) - assert断言详细使用

    = b :判断 a 不等于 b 异常断言 可以使用 pytest.raises 作为上下文管理器,当抛出异常时可以获取到对应的异常实例 # 断言异常 def test_zero_division():...with pytest.raises(ZeroDivisionError): 1 / 0 断言场景:断言它抛的异常是不是预期想要的 代码执行:1/0 预期结果:抛的异常是ZeroDivisionError...zero # 详细断言异常 def test_zero_division_long(): with pytest.raises(ZeroDivisionError) as excinfo:...:这种方法只能断言value,不能断言type # 自定义消息 def test_zero_division_long(): with pytest.raises(ZeroDivisionError...pytest.raise(ZeroDivisionError) 而 对于检查未修复的错误(即,可能会发生异常),使用检查断言可能会更好 @pytest.mark.xfail(raises=ZeroDivisionError

    1.2K20

    Python自动化测试面试:unittest、pytest与Selenium详解

    1. unittest:标准测试框架常见问题:断言方法的使用:理解并恰当选用assertEqual、assertNotIn等断言方法。...测试覆盖率报告生成:使用coverage模块计算代码覆盖率。易错点与避免策略:测试代码冗余:利用setUp和tearDown方法进行初始化和清理工作,避免重复代码。...忽视异常处理:在测试代码中妥善处理预期外的异常,防止测试中断。...参数化测试:使用@pytest.mark.parametrize实现多组输入输出的快速测试。插件系统:熟悉常用的pytest插件,如pytest-cov、pytest-xdist等。...忽视异常处理与测试稳定性:妥善处理StaleElementReferenceException等常见WebDriver异常,确保测试流程顺畅。

    34610

    测试开发知识图谱

    语法错误与定位、异常捕获、异常处理、自定义异常 5.8 面向对象编程 类定义、方法定义、类变量、实例引用、实例变量 5.9 标准库 os 与文件处理、科学计算、网络访问、日期与时间等处理 5.10 多线程处理...5.14 pytest python 最流行的全能型测试框架 6 Web 自动化测试 名称 相关知识点 6.1 selenium selenium简介及实战 6.2 page object page...jacoco 代码覆盖率 10 服务端接口测试 名称 相关知识点 10.1 常见接口协议 tcp/udp/http/restful/dubbo 10.2 抓包分析 tcp 协议 使用 tcpdump...状态码、返回内容等断言 11.4 json/xml 请求 优雅的发送 json、xml 请求 11.5 json/xml 响应断言 json path、xpath 进行断言 11.6 schema...断言 大量响应数据字段的格式断言 11.7 header cookie header 自定义与 cookie 复用 11.8 认证体系 http basic、oauth2 等认证体系的测试 12 服务端性能测试

    1K50

    03 Pytest断言处理_assert和异常断言

    Pytest断言方式及应用场景 使用assert语句 断言预期的异常 断言预期的告警 利用上下文信息进行断言 自定义断言方式 使用assert语句进行断言 pytest允许使用python的标准assert...断言预期的异常 在测试过程中,对某些方法进行测试时,预测输入某些特定数据,会抛出特定异常,若出现特定异常,则用例执行通过。...对这类特定异常断言,可以采用pytest中的pytest.raises()进行处理。...总结 pytest断言方式非常简洁明确。...本节主要介绍了对异常信息的断言,包括4种情况: 直接断言,不添加assert语句 将异常信息存储在变量中,再读取异常信息进行断言判断 对异常的输出信息进行断言异常类型、异常输出信息同时匹配成功,用例才能执行成功

    1.8K110

    【python自动化】pytest系列(上)

    「本章知识点」 【python自动化】pytest系列(上) 1、Pytest安装 2、Pytest注意事项 Pytest Exit Code 含义清单 常见用法 3、Pytest快速入门 (1)方法执行测试...(2)类执行测试 (3)文件执行测试 (4)用例的执行顺序 4、下节内容预告 官网地址:https://docs.pytest.org/en/latest/contents.html Pytest官方介绍...Pytest安装要求:Python 3.7+ 1、Pytest安装 pip install pytest 「验证安装」 pytest --version #会显示当前已安装的版本 2、Pytest注意事项...覆盖率检查:使用"--cov"参数可以生成测试用例的覆盖率报告,例如"pytest --cov=myapp"会生成myapp代码库的覆盖率报告。...实现自定义用例执行顺序 4、下节内容预告 断言assert 命令行运行 pytest-allure报告 相关插件 pytest教程系列之前录制了视频,不过本人普通话不是很好,就不放出来了。

    28220

    Python 单元测试详解

    断言 在 unittest 单元测试框架中提供了丰富的断言方法,例如 assertEqual()、assertIn()、assertTrue()、assertIs()等,而 pytest 单元测试框架中并没提供特殊的断言方法...断言包含和不包含,使用assert a in b和assert a not in b 断言真假,使用assert condition和assert not condition 断言异常,使用 pytest.raise...获取信息 # 详细断言异常 def test_zero_division_long():     with pytest.raises(ZeroDivisionError) as excinfo:         ...1 / 0     # 断言异常类型 type     assert excinfo.type == ZeroDivisionError     # 断言异常 value 值     assert "...六、单元测试覆盖率报告 coverage 是 Python 推荐使用的覆盖率统计工具。 pytest-cov 是 pytest 的插件,它可以让你在 pytest 中使用 cpverage.py。

    2.5K80

    2024年了,你知道硬断言和软断言在自动化测试中的作用和区别吗?

    不幸的是,Python的内建 assert 总是会是一个硬断言。对于软断言,我们需要第三方测试库的帮助,如 pytestpytest.assume()。...这样我们就可以在一个测试执行结束时得到所有的断言结果,而不是在第一个断言失败时就结束测试。如果所有断言都通过,那么这个接口测试就通过了。...当使用 pytest.assume() 函数时,该函数会捕获断言错误并将其记录下来,而不会立即抛出异常。这就是pytest.assume()能够在断言失败时继续执行其他断言的原因。...当你的测试用例中所有的断言都执行完毕后,如果有一个或多个断言失败,pytest.assume() 将会抛出一个异常,该异常将包含所有失败断言的详细信息。...当所有断言都执行完毕后,pytest.assume()将抛出一个异常,列出所有失败的断言。 现在,你理解软断言和硬断言之间的区别了吗? 如果你还有什么疑问,请从下方留言吧~

    32210

    pytest 测试框架学习(11):pytest.raises

    pytest.raises 含义 使用 含义 raises: 在断言一些代码块或者函数时会引发意料之中的异常或者其他失败的异常,导致程序无法运行时,使用 raises 捕获匹配到的异常,可以继续让代码正常运行...assert eval("1 + 2") == 3 raises 可以捕获到该异常,并继续下面断言代码。...如果我们不知道预期异常的是什么,我们可以使用 match 和 raise 进行自定义异常 import pytest def exc(x): if x == 0: raise...在捕获异常后,可以从上下文管理器中获取异常的一些详细信息,可以辅助我们更好的去断言。...参数化 pytest.mark.parametrize 使用参数化的话,可能会存在一部分用例可能会抛出异常,一部分可能会没有异常导致失败。如果想要其正常执行,则需要一个上下文管理器。

    2.8K30
    领券