十一 042008
在测试的过程中,我们经常需要创建一些唯一的值来进行测试,例如测试注册模块的时候,需要有唯一的邮件地址,那么什么样的方法才是正确地生成随机数,或者唯一数的好方法呢?我们下面来看看
很多语言的公共库都会有生成随机数的类,例如在C#里面我们或许可以这样子来生成一些随机的string。
| string uniqeName = “MyTests” + DateTime.Now.ToString();// |
用时间是个比较的选择,但是,如果是自动化脚本,那么会因为执行的速度太快,这有可能使得生成的string会有重复。
那么看看Random类又如何?
| Random random = new Random();
String uniqueName = random.Next(1000).ToString(); |
不要被这个类的名字所欺骗,计算机生成的其实都是伪随机数。
下面是一种改进型的方法,时间+随机数
| Random random = new Random();
string uniqueString = DateTime.Now.ToString() + random.Next(1000); |
这个是比前面两种有所改进,但是还是会有重复数据的可能,因为随机,并不代表唯一。
一个比较好的方法是用GUID,
| string uniqueString = Guid.NewGuid().ToString(“N”); |
我们可以在这个string后面补上邮件地址(这里请忽略为啥不用StringBuilder),GUID是生成随机测试数据的一种好的选择。
Related posts:
[...] 在前面一篇介绍在测试过程中创建唯一数据的文章中,推荐使用GUID作为生成唯一测试数据的方法,本人在测试过程中碰到一个问题,就是对于电话号码的生成,如何使得生成的数据尽可能地达到不重复。C#库里面有一个类-Random,这个类可以帮助开发者或者测试员生成随机数,但是大家都知道,计算机生成的随机数准确来说是伪随机数。本人曾经做过一个小实验,用当前时间作为随机种子,创建1000个随机数,里面重复值是相当多。 [...]