播种试验和随机性再现装置

pytest-rng的Python项目详细描述


pytest rng

pytest-rng为 确保测试中的“随机性”是可重复的 从一次跑步到下一次跑步。 它还允许在请求时更改所有测试的种子, 帮助确保测试成功不依赖于 特定随机数种子。

  • 使用rngfixture获得预种子随机数生成器(rng) 这会暴露numpy的~numpy.random.mtrand.randomstate接口。
  • 使用seedfixture获取整数种子 可以用来初始化你自己的RNG。

下面的示例打印相同的四个随机数 每次测试运行时。

importnumpyasnpdeftest_rectification(rng,seed):print(rng.uniform(-1,1,size=3))print(seed)

要使用这些固定装置,请使用

pip install pytest-rng

安装后,您可以像使用任何其他设备一样使用这些设备: 将rngseed添加到测试函数或类的参数中。

种子产生

对于seedfixture,我们通过执行以下操作生成种子:

  1. 连接测试的nodeidsalt值(如果提供)。
  2. 散列该字符串以生成整数种子。

对于rngfixture,我们还将字符串"rng"添加到salt 在生成上述种子之前的值。 种子用于实例化一个~numpy.random.mtrand.randomstate, 它被归还。

注意

我们在salt中添加"rng",以确保随机数 使用rngfixture时不同 当手动实例化^{tt14}时$ 使用seed设备。

salt是添加到测试的^{tt7}中的字符串$ 以便为所有测试更改种子。 定期更换种子有利于确保 您的测试套件对不同的种子是健壮的。

salt值可以在配置文件中指定 例如setup.cfgpytest.ini

[tool:pytest]rng_salt=v0.3.0

也可以通过命令行指定salt值。

pytest --rng-salt "v0.4.0"

通过命令行传递的salt值优先 超过配置文件中设置的值 这样你就可以在飞行中改变种子。


看到全部 documentation 更多细节。

发布历史记录

1.0.0(2019年8月8日)

初版pytest-rng! 感谢所有的贡献者让这成为可能!

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
如何使用Java解析Html并将结果作为字符串   java我的switch语句有点问题   java在注册后为新用户生成唯一的用户ID   Java 8 lambda表达式字节码一致性   Java应用程序的playframework类型安全控制台配置   java将mxGraph导出到SVG(或任何类型的图像)   业务逻辑之前的java执行方法   LinkedList输出null的Java实现   java需要帮助检查值是否为1   java Delaunay三角形点连通性?   使用setImageResource的java相对路径   java获取方法所消耗的时间   正则表达式当字符串不匹配时,为什么javagrok返回最后一次成功匹配?   java在Spring批处理作业之后触发Spring集成出站适配器   集合Java按降序遍历映射集,返回所需的输出   代表设计模式在Swagger生成代码中的java意义?   如何使用Java代码将Sql Server的数据(行)实时复制到MySql中?