def test_nationality(personal, gender): if personal.locale in ['ru', 'uk', 'kk']: result = personal.nationality(gender=gender) checked_gender = check_gender(gender) assert result in personal.data['nationality'][checked_gender] result = personal.nationality() assert result is not None
def test_surname(personal, gender): if personal.locale in settings.SURNAMES_SEPARATED_BY_GENDER: result = personal.surname(gender=gender) checked_gender = check_gender(gender) assert result in personal.data['surnames'][checked_gender] else: result = personal.surname() assert result in personal.data['surnames']
def patronymic(self, gender=None): """Generate random patronymic name. :param gender: Gender of person. :return: Patronymic name. :Example: Алексеевна. """ gender = check_gender(gender) patronymics = self._data['patronymic'][gender] return self.random.choice(patronymics)
def name(self, gender=None): """Get a random name. :param gender: if 'male' then will returned male name, if 'female' then female name, if None return random from ones. :return: Name. :Example: John. """ gender = check_gender(gender) names = self.data['names'][gender] return self.random.choice(names)
def name(self, gender: Gender = 0) -> str: """Get a random name. :param gender: if 'male' then will returned male name, if 'female' then female name, if None return random from ones. :type gender: int or str :return: Name. :Example: John. """ gender = check_gender(gender) names = self.data['names'].get(gender) return self.random.choice(names)
def surname(self, gender=None): """Get a random surname. :param gender: The gender of person. :return: Surname. :Example: Smith. """ surnames = self.data['surnames'] # Separated by gender. if self.locale in SURNAMES_SEPARATED_BY_GENDER: gender = check_gender(gender) return self.random.choice(surnames[gender], ) return self.random.choice(surnames)
def title(self, gender=None, title_type='typical'): """Get a random title (prefix/suffix) for name. :param gender: The gender. :param title_type: The type of title ('typical' and 'academic'). :return: The title. :Example: PhD. """ try: gender = check_gender(gender) titles = self.data['title'][gender][title_type] except KeyError: raise WrongArgument('Wrong value of argument.') title = self.random.choice(titles) return title
def full_name(self, gender=None, reverse=False): """Generate a random full name. :param reverse: if true: surname/name else name/surname :param gender: if gender='male' then will be returned male name else female name. :return: Full name. :Example: Johann Wolfgang. """ gender = check_gender(gender) fmt = '{1} {0}' if reverse else '{0} {1}' return fmt.format( self.name(gender), self.surname(gender), )
def surname(self, gender: Gender = 0) -> str: """Get a random surname. :param gender: The gender of person. :type gender: int of str :return: Surname. :Example: Smith. """ surnames = self.data['surnames'] # Separated by gender. if self.locale in SURNAMES_SEPARATED_BY_GENDER: gender = check_gender(gender) return self.random.choice(surnames.get(gender), ) return self.random.choice(surnames)
def full_name(self, gender: Gender = 0, reverse: bool = False) -> str: """Generate a random full name. :param bool reverse: Return reversed full name. :param gender: Gender. :type gender: int or str :return: Full name. :Example: Johann Wolfgang. """ gender = check_gender(gender) fmt = '{1} {0}' if reverse else '{0} {1}' return fmt.format( self.name(gender), self.surname(gender), )
def nationality(self, gender=None): """Get a random nationality. :param gender: Gender. :return: Nationality. :Example: Russian. """ # Subtleties of the orthography. separated_locales = ['ru', 'uk', 'kk'] nationalities = self.data['nationality'] if self.locale in separated_locales: gender = check_gender(gender) nations = nationalities[gender] return self.random.choice(nations) return self.random.choice(nationalities)
def title(self, gender: Gender = 0, title_type: str = 'typical') -> str: """Get a random title (prefix/suffix) for name. :param gender: The gender. :type gender: int or str :param str title_type: The type of title ('typical' and 'academic'). :return: The title. :raises WrongArgument: if gender in incorrect format. :Example: PhD. """ try: gender = check_gender(gender) titles = self.data['title'].get(gender).get(title_type) except KeyError: raise WrongArgument('Wrong value of argument.') title = self.random.choice(titles) return title
def test_name(personal, gender): result = personal.name(gender=gender) checked_gender = check_gender(gender) assert result in personal.data['names'][checked_gender]
def test_check_gender_invalid_gender(): with pytest.raises(UnexpectedGender): check_gender(gender='other')
def test_check_gender(abbr, gender): result = check_gender(abbr) assert result == gender or result in gender