3

我正在使用Bogus生成测试数据。

有没有办法设置它使用的种子,以便以相同的顺序生成相同的测试数据?

例如,此测试将失败:

var person1 = new Bogus.Person();
var person2 = new Bogus.Person();
Assert.AreEqual(person1.FullName, person2.FullName);

但是,有没有办法重置种子,使其不会,即:

Bogus.Config.SetSeed(1);
var person1 = new Bogus.Person();

Bogus.Config.SetSeed(1);
var person2 = new Bogus.Person();

Assert.AreEqual(person1.FullName, person2.FullName);
4

2 回答 2

4

自述文件有一个例子:

//Set the randomzier seed if you wish to generate repeatable data sets.
Randomizer.Seed = new Random(8675309);

但是,设置种子意味着随机生成器的结果是一致的。为了做你想做的事,你需要在每次调用之前重置种子以获得相同的结果。

于 2018-10-10T21:26:11.913 回答
1

另一个答案将改变全局种子,这不是很好:

  • 有一个更改,您不能并行运行测试
  • 测试代码相互依赖的变化

推荐的方法是更改​​ Faker 本身的种子:

对于非泛型Faker

var seed = 8675309;
var faker = new Faker()
faker.Random = new Randomizer(seed );

泛型Faker有一个助手,UseSeed

var seed = 8675309;
var faker = new Faker<MyClass>().UseSeed(seed);
于 2021-08-16T08:21:33.330 回答