使用 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 生成器劫持。在本月的“边角料 (Nooks & Crannies)”专栏中,我发现了一个有趣的小型 Python 库,可以帮助开发人员为他们的应用程序生成随机数据。它叫做 Elizabeth

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

在我的测试驱动中,我在一个全新的 Debian Jessie 盒子上使用 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.