from faker import Faker
fake = Faker()
def test_faker():
for _ in range(20):
print(fake.unique.ascii_free_email())






Вот что делает fake.unique. UniqueProxy оборачивает каждый поддельный метод декоратором, который гарантирует, что в рамках этого прогона каждое значение будет возвращено только один раз. См. https://github.com/joke2k/faker/blob/master/faker/proxy.py
Получается, что fake.unique.ascii_free_email() на самом деле не уникален и действительно возвращает повторяющиеся значения, если используется для создания большого количества тестовых писем, поэтому я использовал другой подход к созданию уникальных писем, приняв что-то вроде этого return "test-{}@gmail.com".format(uuid4().hex)
Почему вы хотите это доказать? Если ваша основная цель - избежать дублирования, почему бы не добавить набор и повторно не сгенерировать все, что уже есть в наборе, пока вы не достигнете желаемого количества? «Никогда не создавай обмана» - это большая надежда. Имеется конечное количество символов ASCII ограниченной длины.