def test_get_random_item(random): result = get_random_item(Gender) assert result in Gender random.seed(0xf) result_1 = get_random_item(Gender, rnd=random) result_2 = get_random_item(Gender, rnd=random) assert result_1 == result_2
def full_name(self, gender: Optional[Gender] = None, reverse: bool = False) -> str: """Generate a random full name. :param reverse: Return reversed full name. :param gender: Gender's enum object. :return: Full name. :Example: Johann Wolfgang. """ if gender is None: gender = get_random_item(Gender, rnd=self.random) if gender and isinstance(gender, Gender): gender = gender else: raise NonEnumerableError(Gender) fmt = '{1} {0}' if reverse else '{0} {1}' return fmt.format( self.name(gender), self.surname(gender), )
def _generate_user_data(locale='ru'): person = Person(locale) date = Datetime(locale) gender = get_random_item(Gender) return { 'password': _generate_password(), 'first_name': person.surname(gender=gender), 'last_name': person.name(gender=gender), 'email': person.email(), 'date_joined': date.datetime(start=2014, end=2015).replace(tzinfo=utc), }
def _validate_enum(self, item: Any, enum: Any) -> Any: """Validate enum parameter of method in subclasses of BaseProvider. :param item: Item of enum object. :param enum: Enum object. :return: Value of item. :raises NonEnumerableError: if ``item`` not in ``enum``. """ if item is None: result = get_random_item(enum, self.random) elif item and isinstance(item, enum): result = item else: raise NonEnumerableError(enum) return result.value
def _generate_questionnaire_data(locale='ru') -> dict: person = Person(locale) rus_spec = RussiaSpecProvider() datetime = Datetime(locale) g = get_random_item(Gender) created = datetime.datetime(start=2015, end=2018) return { 'id': uuid.uuid4(), 'created': created.replace(tzinfo=utc), 'updated': created.replace(tzinfo=utc), 'surname': person.surname(gender=g), 'first_name': person.name(gender=g), 'patronymic': rus_spec.patronymic(gender=g), 'birth_date': datetime.datetime(start=1960, end=1998).date(), 'phone_num': person.telephone(), 'pass_ser': rus_spec.passport_series(), 'pass_num': rus_spec.passport_number(), 'score': randint(0, 2000), }
def credit_card_number(self, card_type: Optional[CardType] = None) -> str: """Generate a random credit card number. :param card_type: Issuing Network. Default is Visa. :return: Credit card number. :raises NotImplementedError: if cart_type is not supported. :Example: 4455 5299 1152 2450 """ length = 16 regex = re.compile('(\d{4})(\d{4})(\d{4})(\d{4})') if card_type is None: card_type = get_random_item(CardType, rnd=self.random) if card_type == CardType.VISA: number = self.random.randint(4000, 4999) elif card_type == CardType.MASTER_CARD: number = self.random.choice([ self.random.randint(2221, 2720), self.random.randint(5100, 5500), ]) elif card_type == CardType.AMERICAN_EXPRESS: number = self.random.choice([34, 37]) length = 15 regex = re.compile('(\d{4})(\d{6})(\d{5})') else: raise NonEnumerableError(CardType) str_num = str(number) while len(str_num) < length - 1: str_num += self.random.choice(string.digits) groups = regex.search( # type: ignore str_num + luhn_checksum(str_num), ).groups() card = ' '.join(groups) return card