gpt4 book ai didi

random - 在 ExUnit 测试用例中获取种子和使用随机数

转载 作者:行者123 更新时间:2023-12-04 14:56:37 25 4
gpt4 key购买 nike

我有一个需要使用随机整数的测试用例,所以我有:

test "test with random integer" do      
IO.inspect :random.uniform(10)
assert true
end

这在我运行时总是打印 4,即使我可以在控制台输出中看到不同的种子:
Randomized with seed 197796
...
Randomized with seed 124069

我知道我应该使用 :random.seed/1:random.seed/3 .我想使用与测试输出结束时打印的相同的种子。这样,如果我的测试失败,我可以复制它
mix test --seed 124069

如果我使用 :random.seed(:erlang.now),我就不能这样做例如。

如何获得 ExUnit 用于在测试用例中随机化其测试用例的种子?

最佳答案

在最新版本的 Elixir 中,以下代码现在将返回 ExUnit 使用的种子。 ,即使没有手动指定:

ExUnit.configuration()[:seed]
种子无法通过 ExUnit.configuration 获得在以前的版本中,除非手动指定。相反,您可以自己设置种子,例如在您的 test_helpers.exs文件:
ExUnit.configure seed: elem(:os.timestamp, 2)
像这样设置种子是 how ExUnit did so itself在一个点上。
无论哪种情况,在您的测试代码中,您都可以执行以下操作:
s = ExUnit.configuration |> Keyword.get(:seed)
:rand.seed(:exsss, {s, s, s}) #random enough for me
IO.inspect :rand.uniform(5)
每次运行测试时,您都会得到一个不错的随机值,但如果您使用:
$ mix test --seed <seed>
你每次都会得到相同的值。
关于 :random的注意事项
来自 the docs for :random :

Note

The improved rand module is to be used instead of this module.

关于random - 在 ExUnit 测试用例中获取种子和使用随机数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36598246/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com