class BookFactory(MongoEngineFactory): class Meta: model = Book title = factory.Faker("catch_phrase") pages = factory.LazyFunction( lambda: [text for text in faker.Faker().text()]) author = factory.Faker("name") cover = "" page_active = 1
class TurnpointFactory(Factory): """Turnpoint factory""" class Meta: model = Turnpoint name = Sequence(lambda n: f"TP{n}") description = faker.Faker().sentence(nb_words=4) altitude = int(random() * 1000) shape = 'circle' type = 'waypoint' how = 'entry'
def test(testapp): resp1 = testapp.post_json("/accounts/", None) assert "token" in resp1.json token = resp1.json["token"] fake = faker.Faker() fake_post = fake.job() resp2 = testapp.post_json("/posts/", {"text": fake_post}, headers={"X-Api-Key": token}) assert "id" in resp2.json post_id = resp2.json["id"] resp3 = testapp.get("/posts/") assert "posts" in resp3.json assert post_id in [p["id"] for p in resp3.json["posts"]]
def handle(self, *args, **options): """ Execute the command that create profile(s). """ for _ in range(0, options['number']): new_faker = faker.Faker() user = UserFactory(username=new_faker.email(), email=new_faker.email(), password='******') ProfilFactory(user=user, )
def add_detail(self, create, extracted, **kwargs): """Add detail to event.""" FAKER = faker.Faker() # Set location # 80% chance one location, otherwise multiple if random.randint(1, 5) == 1: self.locations.add(*random.sample(list(Location.objects.all()), random.randint(2, 4))) else: self.locations.add(random.choice(Location.objects.all())) # Set organiser # 80% chance one organiser, otherwise multiple if random.randint(1, 5) == 1: self.organisers.add(*random.sample(list(Organiser.objects.all()), random.randint(2, 3))) else: self.organisers.add(random.choice(Organiser.objects.all())) # Set sponsor # 80% chance one sponsor, otherwise multiple if random.randint(1, 5) == 1: self.sponsors.add(*random.sample(list(Sponsor.objects.all()), random.randint(2, 4))) else: self.sponsors.add(random.choice(Sponsor.objects.all())) # Set series # 50% chance of being in a series if random.randint(1, 2) == 1: self.series = random.choice(Series.objects.all()) # Add sessions start_time = self.start.replace(microsecond=0, second=0, minute=0) number_of_sessions = random.randint(1, 10) for i in range(number_of_sessions): duration = random.choice([30, 60, 120, 180]) end_time = start_time + timedelta(minutes=duration) Session.objects.create( name=FAKER.sentence(), description=FAKER.paragraph(nb_sentences=10), event=self, url=FAKER.url(), start=start_time, end=end_time, ) start_time = end_time self.update_datetimes()
class UserFactory(SQLAlchemyModelFactory): fake = faker.Faker() class Meta: model = User username = factory.Faker('name') password = generate_password_hash("password") @factory.lazy_attribute def email(self): # Convert to plain ascii text clean_name = (unicodedata.normalize('NFKD', self.username) .encode('ascii', 'ignore') .decode('utf8')) return u'*****@*****.**' % clean_name
def create_from_user(cls, user, **kwargs): """ :type user: entry.models.User """ from factory.faker import faker fake = faker.Faker(locale='ru_RU') employee = cls( user=user, first_name=user.first_name if user.first_name else fake.first_name(), last_name=user.last_name if user.last_name else fake.last_name(), timezone=user.timezone, phone=user.phone, email=user.email, is_active=True, **kwargs ) employee.save() return employee
from django.conf import settings from django.contrib.auth import get_user_model from django.core.files import File from django.template.defaultfilters import slugify from django.utils import timezone import factory import pytest from addresses.models import Address from factory.faker import faker from items.models import Category, Item, ItemImage, WearSize from lib.models import CompanyInfo from orders.models import Order, OrderItem FAKE = faker.Faker() class CategoryFactory(factory.django.DjangoModelFactory): class Meta: model = Category name = factory.Sequence(lambda n: "category%d" % n) slug = factory.LazyAttribute(lambda a: slugify(a.name)) parent = None class ItemAccessoryFactory(factory.django.DjangoModelFactory): class Meta: model = Item
def add_detail(self, create, extracted, **kwargs): """Add detail to resource.""" FAKER = faker.Faker() # Set language # 25% chance both languages, otherwise one if random.randint(1, 4) == 1: self.languages.add(*Language.objects.all()) else: self.languages.add(random.choice(Language.objects.all())) # Set technological areas # 20% chance both, otherwise one if random.randint(1, 5) == 1: self.technological_areas.add(*TechnologicalArea.objects.all()) else: self.technological_areas.add( random.choice(TechnologicalArea.objects.all())) # Choose primary (45%), secondary (45%), both (10%) for rest of variables if random.randint(1, 10) == 1: resource_detail_content = CONTENT_BOTH self.year_levels.add(*random.sample(list(YearLevel.objects.all()), random.randint(1, 4))) elif random.randint(1, 2) == 1: resource_detail_content = CONTENT_PRIMARY self.year_levels.add( *random.sample(list(YearLevel.objects.filter( level__lte=8)), random.randint(1, 4))) else: resource_detail_content = CONTENT_SECONDARY self.year_levels.add( *random.sample(list(YearLevel.objects.filter( level__gte=9)), random.randint(1, 4))) # Add progress outcomes if resource_detail_content in [CONTENT_BOTH, CONTENT_PRIMARY]: self.progress_outcomes.add(*random.sample( list( ProgressOutcome.objects.filter( technological_area__in=self.technological_areas.all()) ), random.randint(1, 3))) # Add NZQA standards if resource_detail_content in [CONTENT_BOTH, CONTENT_SECONDARY]: self.nzqa_standards.add(*random.sample( list(NZQAStandard.objects.all()), random.randint(1, 3))) # Add curriculum learning areas self.curriculum_learning_areas.add(*random.sample( list(CurriculumLearningArea.objects.all()), random.randint(0, 2))) # Add components number_of_components = random.randint(1, 9) for i in range(number_of_components): component_name = FAKER.sentence() component_type = random.choice( list(ResourceComponent.COMPONENT_TYPE_DATA)) resource_count = Resource.objects.count() if component_type == ResourceComponent.TYPE_RESOURCE and resource_count >= 2: resources = list(Resource.objects.exclude(pk=self.pk)) resource_component = resources[random.randint( 0, len(resources) - 1)] ResourceComponent.objects.create( name=resource_component.name, resource=self, component_resource=resource_component, ) # TODO: Implement all types of components else: # Website ResourceComponent.objects.create( name=component_name, resource=self, component_url=FAKER.url(), )
# All Rights Reserved. # This file is proprietary and confidential. # Unauthorized copying of this file, via any medium is strictly prohibited. """Factories for Django models for the Klazor project.""" # Classes defined in this module do not need a docstring # as we know up front that they're fa for their corresponding model. # pylint: disable=missing-class-docstring import factory import pytz from factory.faker import faker from klazor import models fake = faker.Faker() ##################### # General #################### class UserFactory(factory.DjangoModelFactory): class Meta: model = models.User username = factory.Sequence(lambda n: 'username%d' % n) email = factory.Faker('email') phone = factory.Faker('phone_number') class FolderFactory(factory.DjangoModelFactory):
import factory from factory.faker import faker from core.tests.factories import SeriesFactory FAKER = faker.Faker(locale='en_US') class PostFactory(factory.django.DjangoModelFactory): class Meta: model = 'blog.Post' headline = factory.Sequence(lambda n: 'post%d' % n) short_description = factory.LazyAttribute(lambda x: FAKER.paragraph()) content = factory.LazyAttribute(lambda x: FAKER.paragraph(10)) class PostWithSeriesFactory(factory.django.DjangoModelFactory): class Meta: model = 'blog.Post' headline = factory.Sequence(lambda n: 'post%d' % n) short_description = factory.LazyAttribute(lambda x: FAKER.paragraph()) content = factory.LazyAttribute(lambda x: FAKER.paragraph(10)) series = factory.SubFactory(SeriesFactory)
def random_filename(): """Use factory.faker to generate a random file name which includes an uppercase character.""" filegen = faker.Faker() return filegen.file_name().title()
def add_detail(self, create, extracted, **kwargs): """Add detail to event.""" # Set featured # 20% chance if random.randint(1, 5) == 1: self.featured = True # Set show schedule # 10% chance to hide if random.randint(1, 10) == 1: self.show_schedule = False # Set location # 80% chance one location, otherwise multiple if random.randint(1, 5) == 1: self.locations.add(*random.sample(list(Location.objects.all()), random.randint(2, 4))) else: self.locations.add(random.choice(Location.objects.all())) # Set organiser # 80% chance one organiser, otherwise multiple if random.randint(1, 5) == 1: self.organisers.add(*random.sample(list(Entity.objects.all()), random.randint(2, 3))) else: self.organisers.add(random.choice(Entity.objects.all())) # Set sponsor # 80% chance one sponsor, otherwise multiple if random.randint(1, 5) == 1: self.sponsors.add(*random.sample(list(Entity.objects.all()), random.randint(2, 4))) else: self.sponsors.add(random.choice(Entity.objects.all())) # Set series # 50% chance of being in a series if random.randint(1, 2) == 1: self.series = random.choice(Series.objects.all()) # Add sessions start_time = self.start.replace(microsecond=0, second=0, minute=0) number_of_sessions = random.randint(1, 10) for i in range(number_of_sessions): duration = random.choice([30, 60, 120, 180]) end_time = start_time + timedelta(minutes=duration) for i in range(random.randint(1, 3)): session = Session.objects.create( # TODO: Figure out how to use faker properly, as it doesn't evaluate here the standard way name=faker.Faker().sentence(), description=faker.Faker().paragraph(nb_sentences=10), event=self, url=faker.Faker().url(), start=start_time, end=end_time, ) # Set location # 80% chance one location, otherwise multiple if random.randint(1, 5) == 1: session.locations.add(*random.sample( list(Location.objects.all()), random.randint(2, 4))) else: session.locations.add(random.choice( Location.objects.all())) session.save() # Set start time for next session as end time for this session start_time = end_time self.update_datetimes()