Welcome!
  • How to take this course
  • A self-assessment
  • Installing Python and PyCharm on Windows
  • Installing Python and PyCharm on OS X
A Full Python Refresher
  • Introduction to this section
  • Access the code for this section here
  • Variables in Python
  • Variables
  • Solution to coding exercise: Variables
  • String formatting in Python
  • Getting user input
  • Writing our first Python app
  • Lists, tuples, and sets
  • Advanced set operations
  • Lists, tuples, and sets
  • Solution to coding exercise: lists, tuples, sets
  • Booleans in Python
  • If statements
  • The 'in' keyword in Python
  • If statements with the 'in' keyword
  • Loops in Python
  • Flow control—loops and ifs
  • Solution to coding exercise: flow control
  • List comprehensions in Python
  • Dictionaries
  • Destructuring variables
  • Functions in Python
  • Function arguments and parameters
  • Default parameter values
  • Functions returning values
  • Functions
  • Solution to coding exercise: Functions
  • Lambda functions in Python
  • Dictionary comprehensions
  • Dictionaries and students
  • Solution to coding exercise: dictionaries
  • Unpacking arguments
  • Unpacking keyword arguments
  • Object-Oriented Programming in Python
  • Magic methods: __str__ and __repr__
  • Classes and objects
  • Solution to coding exercise: classes and objects
  • @classmethod and @staticmethod
  • @classmethod and @staticmethod
  • Solution to coding exercise: @classmethod and @staticmethod
  • Class inheritance
  • Class composition
  • Type hinting in Python 3.5+
  • Imports in Python
  • Relative imports in Python
  • Errors in Python
  • Custom error classes
  • First-class functions
  • Simple decorators in Python
  • The 'at' syntax for decorators
  • Decorating functions with parameters
  • Decorators with parameters
  • Mutability in Python
  • Mutable default parameters (and why they're a bad idea)
  • Conclusion of this section
Your first automated software test
  • Introduction to this section
  • Access the code for this section here
  • Setting up our project
  • Writing our first test
  • Testing dictionary equivalence
  • Writing blog tests and PyCharm run configurations
  • The __repr__ method, and intro to TDD
  • Integration tests and finishing the blog
  • Mocking, patching, and system tests
  • Patching the input method and returning values
  • Taking our patching further
  • The last few patches!
  • The TestCase setUp method
  • Conclusion of this section
Testing a Flask Endpoint
  • Introduction to this section
  • Access the code for this section here
  • Setting our project up
  • Creating our Flask app
  • Our first System test
  • Refactoring our System Tests
  • Conclusion of this section
REST API Testing, Part I
  • Introduction to this section
  • Access the code for this section here
  • A look at a REST API with Flask
  • Unit testing a REST API
  • Setting up our generic BaseTest
  • Integration testing a REST API
  • Conclusion of this section
REST API Testing, Part II
  • Introduction to this section
  • Access the code for this section here
  • Setting up our project
  • Testing foreign key constraints with Python
  • Unit testing models and SQLAlchemy mappers
  • Finishing our Store tests