跳转到主要内容

Flake8 unittest断言方法检查器

项目描述

PyPI Version Python Versions

flake8-assertive 是一个 Flake8 扩展,鼓励使用更丰富、更具体的 unittest 断言,而不仅仅是典型的 assertEqual(a, b)assertTrue(x) 方法。建议的方法执行更精确的检查,并提供比通用方法更好的错误消息。

原文

建议

代码

assertTrue(a == b)

assertEqual(a, b)

A500

assertTrue(a != b)

assertNotEqual(a, b)

A500

assertFalse(a == b)

assertNotEqual(a, b)

A500

assertFalse(a != b)

assertEqual(a, b)

A500

assertTrue(a < b)

assertLess(a, b)

A500

assertTrue(a <= b)

assertLessEqual(a, b)

A500

assertTrue(a > b)

assertGreater(a, b)

A500

assertTrue(a >= b)

assertGreaterEqual(a, b)

A500

assertTrue(a is b)

assertIs(a, b)

A501

assertTrue(a is not b)

assertIsNot(a, b)

A501

assertFalse(a is b)

assertNotIs(a, b)

A501

断言a不等于b

assertIs(a, b)

A501

断言a在b中

断言a包含在b中

A501

断言a不在b中

断言a不包含在b中

A501

断言a不在b中

断言a不包含在b中

A501

断言a是b的实例

断言a是b的实例

A501

断言a不是b的实例

断言a不是b的实例

A501

断言a等于round(b, x)

断言a约等于b,误差为x

A501

断言a约等于round(b, x)

断言a约等于b,误差为x

A501

断言a不等于round(b, x)

断言a不约等于b,误差为x

A501

断言a不约等于round(b, x)

断言a不约等于b,误差为x

A501

断言a等于None

断言a是None

A502

断言a不等于None

断言a不是None

A502

断言a是None

断言a是None

A502

断言a不是None

断言a不是None

A502

断言a不是None

断言a不是None

A502

断言a不是None

断言a是None

A502

断言a等于True

断言a为True

A502

断言a等于False

断言a为False

A502

断言a等于b

assertEqual(a, b)

A503

断言a不等于b

assertNotEqual(a, b)

A503

断言a约等于b,误差为x

断言a约等于b,误差为x

A503

断言a不约等于b,误差为x

断言a不约等于b,误差为x

A503

断言a为True,b为True

断言a为True,b为True,消息为b

A504

断言a为False,b为True

断言a为False,b为True,消息为b

A504

注意,一些建议是原始形式的规范化,例如当使用双重否定时(assertFalse(a != b)assertEqual(a, b))。对于诸如assertFalse(a > b)的情况,它可能与assertLessEqual(a, b)等价,也可能不等价。

安装

使用pip从PyPI安装

$ pip install flake8-assertive

该扩展将由flake8自动激活。您可以通过检查flake8 --version字符串来验证它是否已加载。

$ flake8 --version
4.0.1 (assertive: 2.1.0, ...) CPython 3.9.10 on Darwin

错误代码

此扩展添加了三个新的错误代码(使用A50前缀)

  • A500:对于‘{op}’比较,首选{func}

  • A501:对于‘{op}’表达式,首选{func}

  • A502:首选{func}而不是比较到{obj}

  • A503:使用{func}而不是已弃用的{name}

  • A504:对于{func}诊断,首选‘msg=’参数

配置

配置值在您的配置文件的[flake8]部分中指定,或作为命令行参数(例如,--assertive-snakecase)。

  • assertive-snakecase:建议使用snake_case断言方法名(例如,assert_true())而不是标准名称(例如,assertTrue()

  • assertive-test-pattern:用于标识unittest测试文件(以及其他文件将被跳过)的fnmatch模式

注意事项

在某些特定情况下,建议可能与原始意图不匹配。

测试相等运算符

assertEqual()不会使用==运算符,如果比较已被委派给一个特定类型的相等函数。默认情况下,这是字符串、序列、列表、元组、集合和字典的情况。

如果您的意图是具体测试==运算符,请考虑以这种方式编写断言

assertIs(a == b, True)

这种方法的好处在于验证类型的 __eq__ 实现返回布尔值。不幸的是,它也有缺点,即在失败时报告 a == b 的结果,而不是 ab 的值。

建议者: Serhiy Storchaka

版权所有(c)2018-至今 Jon Parise

特此授予任何获取此软件及其相关文档副本(“软件”)的人免费处理该软件的权利,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件副本的权利,并允许向软件提供的人这样做,前提是遵守以下条件

上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。

软件按“原样”提供,不提供任何形式的保证,明示或暗示,包括但不限于适销性、适用于特定用途和侵权保证。在任何情况下,作者或版权所有者都不应对任何索赔、损害或其他责任负责,无论这些索赔、损害或其他责任是由于合同、侵权或其他方式引起的,与软件或软件的使用或其他交易有关。

变更

2.1.0 (2022-03-15)

  • 建议使用显式的 msg 关键字参数与 assertTrue()assertFalse() 结合使用,以避免意外使用两个参数。这由一个新的错误代码控制: A504

2.0.0 (2021-12-30)

  • 停止支持 Python 2.7 和 3.6,并添加 3.10。

  • 停止支持 flake8 2.x 版本。

1.3.0 (2020-10-12)

  • 停止支持 Python 3.5 并添加版本 3.9。

1.2.1 (2019-12-08)

  • 支持断言方法调用中的关键字参数。

1.2.0 (2019-12-05)

  • 建议使用已弃用方法的推荐名称,例如 assertEqual() 而不是 assertEquals()

1.1.0 (2019-06-26)

  • 建议对 round() 表达式使用 assertAlmostEqual(a, b, x),例如在 assertEqual(a, round(b, x))assertAlmostEqual(a, round(b, x)) 中(以及类似的情况对于 assertNotEqual()assertNotAlmostEqual())。

  • assertAmostEquals()assertNotAlmostEquals() 识别为 assertAlmostEqual()assertNotAlmostEqual() 的别名。

  • 由于已正式退役,停止支持 Python 3.4。

1.0.1 (2018-07-03)

  • 不要对包含多个比较操作的断言提出建议(例如 assertTrue(a == b == c))。

1.0.0 (2018-06-04)

  • 建议使用 assertIsNone(a) 替代 assertTrue(a is None) 等。

  • assertEquals()assertNotEquals() 识别为 assertEqual()assertNotEqual() 的别名。

0.9.0 (2018-05-14)

  • 初始测试版发布

项目详情


下载文件

下载适合您平台的应用程序文件。如果您不确定要选择哪个,请了解更多关于 安装包 的信息。

源分布

flake8-assertive-2.1.0.tar.gz (7.2 kB 查看哈希值)

上传时间 源代码

构建分发版

flake8_assertive-2.1.0-py3-none-any.whl (8.4 kB 查看哈希值)

上传时间 Python 3

支持