Django-faker使用python-faker为Django模型和模板生成测试数据。
项目描述
Django-faker 使用 PyFaker 为Django模型和模板生成测试数据。
如何使用
要安装Django-faker,您可以使用pip
pip install django-faker
配置
在django应用的 settings.py 文件中
INSTALLED_APPS = ( # ... 'django_faker', ) FAKER_LOCALE = None # settings.LANGUAGE_CODE is loaded FAKER_PROVIDERS = None # faker.DEFAULT_PROVIDERS is loaded (all)
填充Django模型
Django-faker 为Django模型提供适配器,以方便测试数据库的填充。要使用模型实例填充,创建一个新的Populator类,然后列出必须生成的所有模型的类和数量。要启动实际的数据填充,调用 execute() 方法。
以下是一个示例,说明如何填充5个 Game 和10个 Player 对象
from django_faker import Faker # this Populator is only a function thats return a django_faker.populator.Populator instance # correctly initialized with a faker.generator.Generator instance, configured as above populator = Faker.getPopulator() from myapp.models import Game, Player populator.addEntity(Game,5) populator.addEntity(Player,10) insertedPks = populator.execute()
填充器使用名称和列类型猜测器来为每个列填充相关数据。例如,Django-faker使用 firstName 格式化器填充名为 first_name 的列,并使用 dateTime 填充具有 datetime 实例的列。因此,生成的实体是连贯的。如果Django-faker误解释了列名,您仍然可以使用 addEntity() 的第三个参数指定用于填充特定列的自定义函数。
populator.addEntity(Player, 10, { 'score': lambda x: populator.generator.randomInt(0,1000), 'nickname': lambda x: populator.generator.email(), }) populator.execute()
当然,Django-faker不填充自增主键。此外,django_faker.populator.Populator.execute() 返回按类索引的插入PK列表。
print insertedPks { <class 'faker.django.tests.Player'>: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], <class 'faker.django.tests.Game'>: [1, 2, 3, 4, 5] }
在上一个示例中,Player 和 Game 模型之间存在关联。由于首先填充 Game 实体,Faker 足够智能,能够将已填充的 Player 实体关联到其中一个已填充的 Game 实体。
页面预览
在您的应用程序主目录中打开 url.py 并添加此 URL
urlpatterns = patterns('', ... url(r'', include('django_faker.urls')), ... )
http://127.0.0.1:8000/preview/ 显示一个伪造的浏览器窗口,适用于截图。
运行测试
在 django 环境中运行 django 测试
$ python runtests.py
或者如果您在 INSTALLED_APPS 中有 'django_faker'
$ python manage.py test django_faker