Coverage for tests / test_tutorial / test_parameter_types / test_index / test_tutorial001.py: 100%

35 statements  

« prev     ^ index     » next       coverage.py v7.13.1, created at 2026-11-09 00:15 +0000

1import subprocess 1abcdefg

2import sys 1abcdefg

3 

4import typer 1abcdefg

5from typer.testing import CliRunner 1abcdefg

6 

7from docs_src.parameter_types.index import tutorial001_py310 as mod 1abcdefg

8 

9runner = CliRunner() 1abcdefg

10app = mod.app 1abcdefg

11 

12 

13def test_type_repr(): 1abcdefg

14 command = typer.main.get_command(app) 1abcdefg

15 age_param = next(param for param in command.params if param.name == "age") 1abcdefg

16 height_meters_param = next( 1abcdefg

17 param for param in command.params if param.name == "height_meters" 

18 ) 

19 assert repr(age_param.type) == "INT" 1abcdefg

20 assert repr(height_meters_param.type) == "FLOAT" 1abcdefg

21 

22 

23def test_help(): 1abcdefg

24 result = runner.invoke(app, ["--help"]) 1abcdefg

25 assert result.exit_code == 0 1abcdefg

26 assert "--age" in result.output 1abcdefg

27 assert "<int>" in result.output 1abcdefg

28 assert "--height-meters" in result.output 1abcdefg

29 assert "<float>" in result.output 1abcdefg

30 

31 

32def test_params(): 1abcdefg

33 result = runner.invoke( 1abcdefg

34 app, ["Camila", "--age", "15", "--height-meters", "1.70", "--female"] 

35 ) 

36 assert result.exit_code == 0 1abcdefg

37 assert "NAME is Camila, of type: <class 'str'>" in result.output 1abcdefg

38 assert "--age is 15, of type: <class 'int'>" in result.output 1abcdefg

39 assert "--height-meters is 1.7, of type: <class 'float'>" in result.output 1abcdefg

40 assert "--female is True, of type: <class 'bool'>" in result.output 1abcdefg

41 

42 

43def test_invalid(): 1abcdefg

44 result = runner.invoke(app, ["Camila", "--age", "15.3"]) 1abcdefg

45 assert result.exit_code != 0 1abcdefg

46 assert "Invalid value for '--age'" in result.output 1abcdefg

47 assert "'15.3' is not a valid int." in result.output 1abcdefg

48 

49 

50def test_script(): 1abcdefg

51 result = subprocess.run( 1abcdefg

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

53 capture_output=True, 

54 encoding="utf-8", 

55 ) 

56 assert "Usage" in result.stdout 1abcdefg