我可以为 Bogus 指定随机种子吗?
Can I specify the random seed for Bogus?
我正在使用 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);
readme有一个这样的例子:
//Set the randomzier seed if you wish to generate repeatable data sets.
Randomizer.Seed = new Random(8675309);
但是,设置种子意味着随机生成器的结果一致。要做你想做的事,你需要在每次调用之前重置种子以获得相同的结果。
另一个答案会改变全局种子,这不是很好:
- 有一个变化你不能运行并行测试
- 有一个变化,测试代码相互依赖
推荐的方法是更改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);
我正在使用 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);
readme有一个这样的例子:
//Set the randomzier seed if you wish to generate repeatable data sets.
Randomizer.Seed = new Random(8675309);
但是,设置种子意味着随机生成器的结果一致。要做你想做的事,你需要在每次调用之前重置种子以获得相同的结果。
另一个答案会改变全局种子,这不是很好:
- 有一个变化你不能运行并行测试
- 有一个变化,测试代码相互依赖
推荐的方法是更改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);