Sobes.tech
Back to questions
Senior
1

from file import ATM, SDK import pytest BILLS = {5000, 1000, 500, 100, 50} @pytest.mark.parametrize( "bills_count_const,expected", [ ({5000: 0, 1000: 0, 500: 0, 100: 0, 50: 0}, False), ({5000: 100, 1000: 100, 500: 100, 100: 100, 50: 100}, True) ] ) def test_false(bills_count_const, expected): atm = ATM(SDK()) atm.bills_count = bills_count_const amount = 1000 res = atm.withdraw(amount) assert res == expected return

Companies where asked
Яндекс

Answer from AI

sobes.tech AI

В данном тесте используется параметризация pytest для проверки метода withdraw класса ATM. Тест проверяет, что при отсутствии купюр (bills_count_const со значениями 0) метод возвращает False, а при наличии большого количества купюр — True.

Пример показывает, как можно подставлять разные состояния банкомата и проверять корректность работы снятия денег.

Ключевые моменты:

  • @pytest.mark.parametrize позволяет запускать тест с разными входными данными.
  • atm.bills_count задаёт текущее количество купюр по номиналам.
  • Метод withdraw(amount) должен возвращать булево значение, указывающее, удалось ли снять сумму.

Пример использования параметризации:

@pytest.mark.parametrize(
    "input,expected",
    [
        ({5000: 1, 1000: 0}, True),
        ({5000: 0, 1000: 0}, False),
    ]
)
def test_withdraw(input, expected):
    atm = ATM(SDK())
    atm.bills_count = input
    assert atm.withdraw(5000) == expected

Это помогает покрыть разные сценарии без дублирования кода.