1. Testing
    1. Traditional Organizations
    2. Quality Assurance
    3. Web age Organizations
    4. TDD vs Testing as an Afterthought
    5. Why test?
    6. Testing Modes
    7. Testing Applications
    8. Testing What to test?
    9. Testing in Python
    10. Testing Environment
    11. Testing Setup - Fixture
    12. Testing Resources
  2. Testing with unittest
    1. Use a module
    2. Test a module
    3. The tested module
    4. Testing - skeleton
    5. Testing
    6. Test examples
  3. Testing with PyTest
    1. Pytest features
    2. Test methods
    3. Pytest setup
    4. Pytest - AUT - Application Under Test
    5. How to use the module?
    6. Pytest - simple passing test
    7. Pytest failing test in one function
    8. Pytest failing test separated
    9. Pytest run all the test files
    10. Exercise: test simple module
    11. Pytest expected exception
    12. Pytest a nice Fibonacci example
    13. Pytest testing Fibonacci
    14. Pytest expected exception
    15. Pytest testing expected exception
    16. Pytest Change the text of the exception
    17. Pytest Missing exception
    18. Pytest Other exception is raised
    19. Pytest No exception is raised
    20. Exercise: test more exceptions
    21. Solution: test more exceptions
    22. PyTest: Multiple Failures
    23. PyTest: Multiple Failures output
    24. PyTest Selective running of test functions
    25. PyTest: stop on first failure
    26. Pytest: expect a test to fail (xfail or TODO tests)
    27. Pytest: expect a test to fail (xfail or TODO tests)
    28. PyTest: show xfailed tests with -rx
    29. Pytest: skipping tests
    30. Pytest: show skipped tests with -rs
    31. Pytest: show extra test summmary info with -r
    32. Pytest: skipping tests output in verbose mode
    33. Pytest verbose mode
    34. Pytest quiet mode
    35. PyTest print STDOUT and STDERR using -s
    36. Exercise: test math functions
    37. Exercise: test this app
    38. Exercise: test the csv module
    39. Solution: Pytest test math functions
    40. Solution: Pytest test this app
    41. Solution: test the csv module
    42. PyTest using classes
    43. Exercise: module
    44. Exercise: Open Source
    45. Parametrize PyTest with pytest.mark.parametrize
    46. Parametrize PyTest with multiple parameters
    47. Pytest and forking
    48. Exercise: Write tests for script combining files
    49. Solution: Write tests for script combining files
    50. Pytest: Flask echo
    51. Pytest: testing Flask echo
    52. Pytest resources
    53. Anagram on the command line
    54. PyTest testing CLI
  4. Pytest assert
    1. PyTest failure reports
    2. PyTest compare numbers
    3. PyTest compare numbers relatively
    4. PyTest compare strings
    5. PyTest compare long strings
    6. PyTest is one string in another strings
    7. PyTest test any expression
    8. PyTest element in list
    9. PyTest compare short lists
    10. PyTest compare short lists - verbose output
    11. PyTest compare lists
    12. PyTest compare dictionaries - different values
    13. PyTest compare dictionaries - missing-keys
  5. PyTest Fixtures
    1. PyTest: What are Fixtures?
    2. PyTest: test with functions
    3. PyTest Fixture setup and teardown xUnit style
    4. PyTest Fixture setup and teardown output
    5. PyTest: Fixture Class setup and teardown
    6. PyTest: Fixture Class setup and teardown output
    7. What is Dependency injection?
    8. Pytest fixture - tmpdir
    9. Pytest and tempdir
    10. Pytest CLI key-value store
    11. Pytest testing key-value store - environment variable
    12. Pytest testing key-value store - environment variable (outside)
    13. Application that prints to STDOUT and STDERR
    14. Pytest capture STDOUT and STDERR with capsys
    15. PyTest - write your own fixture
    16. Pytest Fixture - autouse fixtures
    17. Share fixtures among test files: conftest.py
    18. Manual fixtures (dependency injection)
    19. Pytest Fixture providing value
    20. Pytest Fixture providing value with teardown
    21. Pytest create fixture with file(s) - app and test
    22. Pytest create fixture with file(s) - helper function
    23. Pytest create fixture with file(s) - fixture
    24. Pytest with Docker - application
    25. Pytest with Docker - test
    26. Pytest with Docker - improved
    27. Pytest fixture inject data
    28. Pytest fixture for MongoDB
    29. Pytest parameters
    30. Pytest parametrized fixture
    31. Pytest parametrized fixture with dependency injection
    32. Pytest parametrized fixture to use Docker
  6. Pytest Mocking
    1. Pytest: Mocking - why?
    2. Pytest: Mocking - what?
    3. Pytest: What is Mocking? - Test Doubles
    4. Pytest: Monkey Patching
    5. Pytest: Hard-coded path
    6. Pytest: Hard-coded path - manually replace attribute
    7. Pytest: Hard-coded path - monkeypatch attribute
    8. Pytest: Hard-coded path - monkeypatch attribute - tempdir
    9. Pytest: Mocking slow external API call
    10. Pytest: Mocking slow external API call - manually replace function
    11. Pytest: Mocking slow external API call - manually replace function - broken remote
    12. Pytest: Mocking slow external API call - monkeypatch
    13. Pytest: Mocking STDIN
    14. Pytest: Mocking STDIN manually mocking
    15. Pytest: Mocking STDIN - monkeypatch
    16. Pytest: Mocking random numbes - the application
    17. Pytest: Mocking random numbes
    18. Pytest: Mocking multiple random numbers
    19. Pytest: Mocking environment variables
    20. Pytest: Mocking time
    21. Pytest: Mocking time (test expiration)
    22. Pytest: mocking specific timestamp with datetime
    23. Pytest: mocking specific timestamp with datetime
    24. Pytest: mocking datetime.date.today
    25. Pytest: mocking datetime date
    26. Pytest: One dimensional spacefight
    27. Pytest: Mocking input and output in the game
    28. Pytest: Mocking input and output in the game - no tools
    29. Pytest: Mocking random in the game
    30. Pytest: Mocking random in the game - no tools
    31. Pytest: Flask app sending mail
    32. Pytest: Mocking Flask app sending mail
    33. Pytest: Mocking - collecting stats example
  7. Pytest command line options
    1. PyTest: Run tests in parallel with xdist
    2. PyTest: Order of tests
    3. PyTest: Randomize Order of tests
    4. PyTest: Force default order
    5. PyTest test discovery
    6. PyTest test discovery - ignore some tests
    7. Pytest dry-run - collect-only
    8. PyTest select tests by name
    9. Pytest use markers to select tests
    10. PyTest select tests by marker
    11. No test selected
    12. Pytest reporting in JUnit XML or JSON format
    13. Pytest reporting in JUnit XML format
    14. Pytest reporting in JSON format
    15. Pytest JSON report
    16. Add extra command line parameters to Pytest - conftest - getoption
    17. Add extra command line parameters to Pytest - as a fixture
    18. Add extra command line parameters to Pytest - used in the autouse fixtures
    19. PyTest: Test Coverage
    20. Pytest and flake8
    21. Pytest and mypy
  8. Pytest - other
    1. Testing with Pytest
    2. Testing functions
    3. Testing class and methods
    4. Pytest - execute
    5. Pytest - execute
    6. Pytest simple module to be tested
    7. Pytest simple tests - success
    8. Pytest simple tests - success output
    9. Pytest simple tests - failure
    10. Pytest simple tests - failure output
    11. PyTest bank deposit
    12. PyTest expected exceptions (bank deposit)
    13. PyTest expected exceptions (bank deposit) - no exception happens
    14. PyTest expected exceptions (bank deposit) - different exception is raised
    15. PyTest expected exceptions - divide
    16. PyTest expected exceptions output
    17. PyTest expected exceptions (text changed)
    18. PyTest expected exceptions (text changed) output
    19. PyTest expected exceptions (other exception)
    20. PyTest expected exceptions (other exception) output
    21. PyTest expected exceptions (no exception)
    22. PyTest expected exceptions (no exception) output
    23. PyTest compare short lists - output
    24. Testing Master Mind
    25. Module Fibonacci
    26. PyTest - assertion
    27. PyTest - failure
    28. PyTest - list
    29. Pytest: monkeypatching time
    30. PyTest: no random order