使用 Elizabeth 为你的应用程序生成随机数据

420 位读者喜欢这篇文章。
Open data brain

Opensource.com

Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem. Nulla consequat massa quis enim. Donec pede justo, fringilla vel, aliquet nec, vulputate eget, arcu. 

不,我的文章没有被 Lorem ipsum 生成器劫持。在本月的“边角料”专栏中,我发现了一个有趣的 Python 小库,可以帮助开发人员为他们的应用程序生成随机数据。它叫做 Elizabeth

Elizabeth 由 Líkið Geimfari 编写,并根据 MIT 许可证获得许可,它拥有一组 18 个数据提供程序,支持 21 种不同的语言环境,您可以使用它们生成随机信息,包括姓名和个人特征、地址、文本数据、交通信息、网络和互联网社交媒体数据、数字等等。安装需要 Python 3.2 或更高版本,您可以使用 pip 或从 git 仓库安装它。

在我的测试驱动中,我在全新的 Debian Jessie box 上使用 pip 安装。您需要 apt-get install python3-pip,这将安装 Python 和所需的依赖项。然后 pip install elizabeth,您就可以使用它了。

为了好玩,让我们在 Python 交互式解释器中生成一些关于人的随机数据

>>> from elizabeth import Personal
>>> p=Personal('en')
>>> p.full_name(gender="male")
'Elvis Herring'
>>> p.blood_type()
'B+'
>>> p.credit_card_expiration_date()
'09/17'
>>> p.email(gender='male')
'jessie7517@gmail.com'
>>> p.favorite_music_genre()
'Ambient'
>>> p.identifier(mask='13064########')
'1306420450944'
>>> p.sexual_orientation()
'Heterosexual'
>>> p.work_experience()
39
>>> p.occupation()
'Senior System Designer'
>>>

在您的代码中使用它的方式是一样的——创建一个对象,然后调用您想要填充数据的方法。

Elizabeth 内置了 18 种不同的生成器工具,添加新的工具也一点都不难;您只需要定义从 JSON 值集合中获取数据的例程。这是另一个解释器中的一些随机文本字符串生成

>>> from elizabeth import Text
>>> t=Text('en')
>>> t.swear_word()
'Rat-fink'
>>> t.quote()
'Let them eat cake.'
>>> t.words(quantity=20)
['securities', 'keeps', 'accessibility', 'barbara', 'represent', 'hentai', 'flower', 'keys', 'rpm', 'queen', 'kingdom', 'posted', 'wearing', 'attend', 'stack', 'interface', 'quite', 'elementary', 'broadcast', 'holland']
>>> t.sentence()
'She spent her earliest years reading classic literature, and writing poetry.'

使用 Elizabeth 填充您可能需要的用于开发或测试的 SQLite 或其他数据库并不困难。入门文档给出了一个使用 Flask 轻量级 Web 框架的医疗应用程序示例。

Elizabeth 给我留下了非常深刻的印象——它速度超快、轻量级、易于扩展,而且社区虽然很小,但非常活跃和投入。截至撰写本文时,该项目已有 25 位提交者,问题也得到了迅速处理。完整的 Elizabeth 文档易于阅读和理解,并提供了广泛的 API 参考,至少对于美国英语是这样。

我尝试修改链接,看看是否有其他语言的文档,但我没有成功。由于非英语语言环境中的 API 不同,记录这些差异将对用户非常有帮助。公平地说,即使您的 Python-fu 不强,阅读代码并找出可用的方法也不是很难。对我来说,另一个明显的不足是缺少阿拉伯语或希伯来语语言环境测试数据。这些是著名的从右到左的语言,对于试图将其应用程序国际化的开发人员来说,正确处理这些语言是一个主要的障碍。像 Elizabeth 这样可以帮助实现这一目标的工具非常棒。

对于需要应用程序示例数据的开发人员来说,Elizabeth 是一个有价值的工具,对于那些试图创建真正多语言、可本地化应用程序的人来说,它可能是一笔宝藏。

User profile image.
Ruth Holloway 长期以来一直担任系统管理员和软件开发人员,早在 VAX 11/780 上就开始了她的职业生涯。她的职业生涯(到目前为止)大部分时间都在为图书馆提供技术需求服务,并且自 2008 年以来一直是 Koha 开源图书馆自动化套件的贡献者。Ruth 目前是 Clearbuilt 的 Perl 开发人员和项目主管。

7 条评论

我发现这个网站对于生成一次性小批量测试非常有用:http://www.generatedata.com/ 它也是开源的!

为什么随机电子邮件生成器生成 gmail.com 地址?您可以生成有效的收件人电子邮件,并在测试期间发送电子邮件(事情就是会发生)。
example.com 可能会更好,我猜。

我同意您的观点——使用名义上有效的地址存在风险。我对代码进行了一些挖掘,实际上这是可配置的!在 __init__.py 中,从大约 2100 行开始,您可以找到 EMAIL_DOMAINS 的数组定义,其中给出了示例电子邮件生成器的域列表。更改它会改变这种有问题的行为。

回复 作者:Antti Linno (未验证)

很棒的发现。我一直在寻找类似的东西(虽然我不知道我在找)。谢谢你!

好文章。这将对我的下一个项目 POC 非常有帮助

Creative Commons License本作品根据 Creative Commons Attribution-Share Alike 4.0 International License 获得许可。
© . All rights reserved.