Files
012-guess_the_number/tests/test_game.py
Tirsvad 9a08450354
TirSystem/github-action: Sync GitHub mirror metadata / sync-metadata (push) Successful in 5s
Add number guessing game project scaffold
- Add guess_the_number package with set_difficulty, check_answer and
  play_game, plus constants.py (range, attempts, ASCII logo)
- Add pytest tests for difficulty, feedback and full game flow
- Add pyproject.toml (Python >= 3.13, no runtime dependencies)
- Add docs/Doxyfile and Doxygen comments in the source
- Rewrite README with venv setup, run, test and docs instructions
- Ignore docs/build/ in .gitignore
2026-10-04 22:28:35 +08:00

41 lines
1.2 KiB
Python

import pytest
from guess_the_number import game
from guess_the_number.constants import EASY_ATTEMPTS, HARD_ATTEMPTS
def test_set_difficulty():
assert game.set_difficulty("easy") == EASY_ATTEMPTS
assert game.set_difficulty(" HARD ") == HARD_ATTEMPTS
def test_set_difficulty_invalid():
with pytest.raises(ValueError):
game.set_difficulty("medium")
def test_check_answer_high_low_correct(capsys):
assert game.check_answer(50, 10, 5) == 4
assert "Too high" in capsys.readouterr().out
assert game.check_answer(5, 10, 4) == 3
assert "Too low" in capsys.readouterr().out
assert game.check_answer(10, 10, 3) == 3
assert "You got it" in capsys.readouterr().out
def _run(monkeypatch, inputs, answer=42):
monkeypatch.setattr(game.random, "randint", lambda a, b: answer)
it = iter(inputs)
monkeypatch.setattr("builtins.input", lambda _="": next(it))
game.play_game()
def test_play_game_win(monkeypatch, capsys):
_run(monkeypatch, ["easy", "abc", "500", "10", "42"])
assert "You got it" in capsys.readouterr().out
def test_play_game_lose(monkeypatch, capsys):
_run(monkeypatch, ["bogus", "hard"] + ["1"] * HARD_ATTEMPTS)
assert "You lose" in capsys.readouterr().out