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
Это помогает покрыть разные сценарии без дублирования кода.