Coverage for tests / test_tutorial / test_progressbar / test_tutorial006.py: 100%

18 statements  

« prev     ^ index     » next       coverage.py v7.13.1, created at 2026-02-09 12:36 +0000

1import subprocess 1abcdefgh

2import sys 1abcdefgh

3from unittest.mock import patch 1abcdefgh

4 

5from typer.testing import CliRunner 1abcdefgh

6 

7import docs_src.progressbar.tutorial006_py39 as mod 1abcdefgh

8from tests.utils import normalize_rich_output 1abcdefgh

9 

10app = mod.app 1abcdefgh

11 

12runner = CliRunner() 1abcdefgh

13 

14 

15def test_cli(): # Checking only final state of progress bar 1abcdefgh

16 with patch("time.sleep") as mock_sleep: 1abcdefgh

17 result = runner.invoke(app) 1abcdefgh

18 

19 # Replace all Rich formatting with `*` characters 

20 normalized_output = normalize_rich_output(result.output) 1abcdefgh

21 

22 assert result.exit_code == 0 1abcdefgh

23 assert mock_sleep.call_count == 4 1abcdefgh

24 assert "Processed 1000 things in batches." in normalized_output 1abcdefgh

25 

26 

27def test_script(): 1abcdefgh

28 result = subprocess.run( 1abcdefgh

29 [sys.executable, "-m", "coverage", "run", mod.__file__, "--help"], 

30 capture_output=True, 

31 encoding="utf-8", 

32 ) 

33 assert "Usage" in result.stdout 1abcdefgh