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

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 InputStream对象在声明后关闭   java未定义名为“transactionManager”的bean重命名transactionManager   java“jar”命令何时会拒绝将类添加到java中。jar文件?   java JPA标准依赖WHERE子句   安卓中从SD卡读取文本文件时出现java错误   java直接启用类似位置的权限   使用@WebMvcTest和Mockito-BDDMockito对SpringBoot-RestController进行java测试   java JSESSIONID存储在哪里?   java jtextarea鼠标事件覆盖容器鼠标事件   java DRL无法解析动态加载的类   java是从一个方法返回多个对象的最简单方法   java自定义按钮/编辑框是否不可见?   java GUI如何在保存用户输入的同时在面板或框架之间切换   swing Java自定义JSlider不会更新   GridBagLayout中的java超过1个JPanel   java从ProjectReactor中的flux中采样除第一个元素外的所有元素   Java泛型和泛型类型   Java代码生成宽指令的jvm