Generate dummy customer data
I can't come up with many performance improvements, but I have a couple of suggestions for you.
Dummy variable in the for loop
You have a for loop that goes
for i in range(count):
    # ...

but you do nothing with i because you just want to execute the function i times.
A very idiomatic way to say you don't need the variable is by writing
for _ in range(count):

It saves people the time of looking for the usage of i inside the loop.
One item per line, end line with comma on long lists
You have a long list of kwargs that you pass in to CustomerLogin_PydanticIn, and in those cases it is better to have a kwarg per line and ending every line with a comma. You almost do this, you are just missing the last line:
customer_login = CustomerLogin_PydanticIn(
    event_timedate=event_timedate,
    # ...
    plain_email=plain_email,
)

This apparently tiny change will be more git friendly if/when you need to add/remove kwargs.
Short circuiting
Finally, for the sake of completeness (as this was already mentioned in other answers) you can use short-circuiting for the None checks:
plain_email = user.plain_email
if plain_email is None:
    plain_email = await get_random_email()

becomes
plain_email = user.plain_email or await get_random_email()

Double fail cause..?
Your code reads:
        if result is None:
            result = await get_random_result()

            if 'AUTHENTICATION_SUCCESS' not in result:
                fail_cause = await get_random_fail_cause()
                if fail_cause is None:
                    fail_cause = await get_random_fail_cause()

In particular, you do fail_cause = await get_random_fail_cause() and if fail_cause is None, you do the exact same line again, but only once more.
What if fail_cause is still None? Maybe you know that get_random_fail_cause doesn't return two Nones in a row?
Assuming you don't know that for sure, you would probably write a while loop:
fail_cause = None
while fail_cause is None:
    fail_cause = await get_random_fail_cause()