Как проверить корректность функций, использующих random?

Существуют некоторые области приложений (например, GameDev), в которых множество функций должно быть создано с использованием случайных значений для получения их вывода. Один из примеров представлен ниже:

def generate_key(monster_key_drop_coef):
    key_letters = string.ascii_uppercase
    rand = random.random()
    if monster_key_drop_coef < rand:
        return None

    button = {}
    button["type"] = random.choice([1,2,3])
    button["letter"] = random.choice(key_letters)
    return button

Эта функция генерирует выпадение предмета на основе нескольких случайных операций.Проблема возникает, если вы хотите автоматически проверять правильность этой функции.Сгенерированные значения не являются детерминированными и написание регрессионных тестов кажется невозможным.

Мои вопросы:

  1. Можно ли написать полезные регрессионные тесты для этого типа функции?
  2. Существует ли в этом случае какой-либо общий подход к созданию тестов другого типа?
5
задан Aliaksei Ramanau 11 June 2012 в 16:52
поделиться