Nose插件,用于随机排序测试并控制random.seed。
项目描述
未维护: 由于我已经有一段时间没有使用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 一起工作的问题,因为 unicode 与 distutils.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的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 7e483a3d79e13ae760d6ade57ae07ae45bb4b223b61a805e958b4c077116c67c |
|
MD5 | e358c97da4be4514b8505c27ca8e8a5d |
|
BLAKE2b-256 | 64169d04cfec78f92544bc14bf9d54584a7b18ed71ce5da18d965438bbd6ef28 |
nose_randomly-1.2.6-py2.py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 257a10813e85fd28bba97f830ed1ba68f564d5a0653add08f5a2e4b8711fa740 |
|
MD5 | 3049d081ce280e0b2a633c80aef6671f |
|
BLAKE2b-256 | d5aa7f7ef8e0690331a0c26e2cd089cb769ac6e02970ee3bf921d1b96b4999e7 |