Skocz do zawartości

[python] losowe parametry funkcji


SeeM

Rekomendowane odpowiedzi

Hej.

Potrzebuję losować sobie dużo użytkowników przy każdym testowaniu aplikacji. Mam coś takiego:

def random_string(length=15):
  return ''.join(random.choices(string.ascii_lowercase, k=length))

def create_test_user(username=random_string(),
                     email=f'{random_string()}@email.pl',
                     password='qwerty*%123456'):
  user_test = User(username=username, email=email, password=password)
  return user_test

Problem w tym, że to nie przelosowuje ani wartości username oraz email:

In [2]: ble = create_test_user

In [3]: ble2 = create_test_user

In [4]: ble
Out[4]: <function mekhub.tests.create_test_user(username='suvkqmwtxyxivho', email='[email protected]', password='qwerty*%123456')>

In [5]: ble2
Out[5]: <function mekhub.tests.create_test_user(username='suvkqmwtxyxivho', email='[email protected]', password='qwerty*%123456')>

Pewnie to coś łatwego, ale nie mogę sobie z tym poradzić. Próbowałem dodać random.seed() przed każdym wywołaniem fukcji random_string oraz create_test_user, ale za nadal wartości username oraz email są te same.

Fukcja random_string działa zgodnie z oczekiwaniami, zwracając różne 15-znakowe ciągi. Jedynie create_test_user zwraca ciągle te same wartości. Nawet po usunięciu i zdefiniowaniu ponownie funkcji create_test_user wartości są te same.

n [1]: from aplikacja.tests import random_string, create_test_user

In [2]: ble = create_test_user

In [3]: ble
Out[3]: <function mekhub.tests.create_test_user(username='rdemxbsltajpkja', email='[email protected]', password='qwerty*%123456')>

In [4]: del create_test_user

In [5]: from aplikacja.tests import random_string, create_test_user

In [6]: ble2 = create_test_user

In [7]: ble2
Out[7]: <function mekhub.tests.create_test_user(username='rdemxbsltajpkja', email='[email protected]', password='qwerty*%123456')>

Macie jakieś pomysły?

 

Odnośnik do komentarza
Udostępnij na innych stronach

To już próbowałem i byłoby zbyt proste (-:

In [2]: ble = create_test_user()

In [3]: ble2 = create_test_user()

In [4]: ble
Out[4]: <User: ealksmyezmnrgpt>

In [5]: ble2
Out[5]: <User: ealksmyezmnrgpt>

Zawsze dostaję tę samą nazwę użytkownika.

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
×
×
  • Dodaj nową pozycję...