跳转到主要内容

Nose插件,用于随机排序测试并控制random.seed。

项目描述

https://img.shields.io/travis/adamchainz/nose-randomly.svg https://img.shields.io/pypi/v/nose-randomly.svg
Randomness power.

未维护: 由于我已经有一段时间没有使用nose了,并且nose本身自2015年以来没有发布过版本,自2016年以来也没有提交过(在撰写本文时大约3年),因此我不再维护这个包。如果您想继续维护,请与我联系。


Nose插件,用于随机排序测试并控制 random.seed。(也适用于 pytest)。

功能

所有这些功能默认启用,但可以使用标志禁用。

  • 在加载测试模块时随机洗牌子模块,TestCase 类 + 测试函数。

  • 在加载 TestCase 时随机洗牌其中的测试函数。

  • 在每个测试用例和测试开始时重置 random.seed() 到一个固定数字 - 默认为测试运行开始时的 time.time(),但您可以通过传递 --randomly-seed 来重复由随机性引起的失败。

  • 如果已安装 factory boy,则在每次测试开始时重置其随机状态。这允许重复使用其随机的“模糊”功能。

  • 如果安装了faker,则每次测试开始时都会重置其随机状态。这对于测试中的可重复模糊数据也是一样的——factory boy 使用 faker 处理大量数据。

关于

测试中的随机性可以非常强大,可以发现测试本身的隐藏缺陷,并为您的系统提供更多覆盖。

通过随机排序测试,可以降低测试之间意外依赖的风险——这是一种在许多地方使用的技术,例如 Google 的 C++ 测试运行器 googletest

通过为每个测试重置随机种子为一个可重复的数字,测试可以基于随机数创建数据,同时仍然可重复,例如 factory boy 的模糊值。这有助于确保测试指定它们所需的数据,并且测试系统不受任何未指定而随机填充的数据的影响。

需求

已测试

  • Python 2.7, 3.6

  • Nose 的最新版本

用法

使用 pip 安装

pip install nose-randomly

Nose 会自动找到插件。

要在测试运行中激活它,请使用 --with-randomly 标志,例如

nosetests -v --with-randomly

输出将开始于一行额外的信息,告诉您正在使用的随机种子

Using --randomly-seed=1234
test_D (abcd_tests.Tests) ... ok
...

如果测试由于排序或随机创建的数据而失败,您可以使用该种子重新启动它们

nosetests -v --with-randomly --randomly-seed=1234

您可以使用以下标志禁用您不喜欢的行为

  • --randomly-dont-shuffle-modules - 关闭模块内容的排序

  • --randomly-dont-shuffle-cases - 关闭 TestCase 类中测试函数的排序

  • --randomly-dont-reset-seed - 关闭每个测试开始时 random.seed() 的重置

背景

nose 从 2009 年有一个未合并的拉取请求,用于添加随机排序功能。这以插件格式在 nose-randomize 包中可用。它工作得相当好,但我发现,由于它替换了 nose 内部的所有测试加载机制,它可能会与其他插件产生不良交互。此插件被开发为一个更薄的一层来实现相同的功能,以及之前不可用的随机种子重置。

许可

  • BSD 许可证,请参阅 LICENSE 文件

  • Logo 由 Christian Mohr 从 Noun Project (链接) 提供。

历史

待发布

1.2.6 (2019-02-07)

  • 更新 PyPI 开发状态为不活跃。此包不再维护,请参阅 README.rst。

  • 已删除 Python 2.6 兼容性,因为上游依赖项 NumPy 也是如此。

1.2.5 (2016-10-28)

  • 设置高插件分数以确保 nose-randomly 在其他插件之前加载。这修复了一个错误,当使用 Nose 内置的 doctests 插件时,随机化会消失。

1.2.4 (2016-10-27)

  • 也为 NumPy 重置了随机状态。

1.2.3 (2016-08-19)

  • 固定输出,使插件启用时始终输出随机种子,而不仅仅是测试开始时重置 random.seed()。感谢 @amygdalama。

1.2.2 (2016-07-06)

  • 修复了在 Python 2 上与 python setup.py nosetests 一起工作的问题,因为 unicodedistutils.fancy_getopt 不兼容。

1.2.1 (2016-06-01)

  • 支持测试生成器。

1.2.0 (2015-12-10)

  • 也为 Faker (pip 包 fake-factory) 重置了随机状态。

1.1.0 (2015-08-27)

  • 也在 nose 测试上下文(TestCases 等)开始时重置随机种子。

  • 通过始终使用 random.setstate() 进行重置,实现轻微的性能提升。

1.0.0 (2015-07-23)

  • 在 PyPI 上的第一次发布。

项目详情


下载文件

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

源分布

nose-randomly-1.2.6.tar.gz (9.7 kB 查看哈希值)

上传时间 源代码

构建分布

nose_randomly-1.2.6-py2.py3-none-any.whl (6.9 kB 查看哈希值)

上传时间 Python 2 Python 3

支持者