Coverage for unit_tests/test_003_annotated_argument.py: 100%

22 statements  

« prev     ^ index     » next       coverage.py v7.6.0, created at 2024-08-04 21:00 +0200

1import subprocess 

2import sys 

3 

4from typer.testing import CliRunner 

5 

6import pydantic_typer 

7from examples import example_003_annotated_argument as mod 

8 

9runner = CliRunner() 

10 

11app = pydantic_typer.Typer() 

12app.command()(mod.main) 

13 

14 

15def test_help(): 

16 result = runner.invoke(app, ["--help"]) 

17 assert result.exit_code == 0 

18 

19 

20def test_parse_pydantic_model(): 

21 result = runner.invoke(app, '--num 1 2 "John Doe"') 

22 assert "1 <class 'int'>" in result.output 

23 assert "id=2 name='John Doe' <class 'examples.example_003_annotated_argument.User'>" in result.output 

24 

25 

26def test_wrong_order(): 

27 result = runner.invoke(app, '--num 1 "John Doe" 2') 

28 assert result.exit_code == 2 

29 assert "Usage" in result.output 

30 

31 

32def test_script(): 

33 result = subprocess.run( 

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

35 capture_output=True, 

36 encoding="utf-8", 

37 check=False, 

38 ) 

39 assert "Usage" in result.stdout