Autoplay
Autocomplete
Previous Lesson
Complete and Continue
Automated Software Testing with Python
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 (1:01)
Access the code for this section here
Variables in Python (8:26)
String formatting in Python (6:26)
Getting user input (5:16)
Writing our first Python app (3:19)
Lists, tuples, and sets (6:31)
Advanced set operations (4:39)
Booleans in Python (4:59)
If statements (8:17)
The 'in' keyword in Python (2:02)
If statements with the 'in' keyword (8:18)
Loops in Python (11:07)
List comprehensions in Python (7:24)
Dictionaries (8:31)
Destructuring variables (8:28)
Functions in Python (10:41)
Function arguments and parameters (7:40)
Default parameter values (3:54)
Functions returning values (7:19)
Lambda functions in Python (7:52)
Dictionary comprehensions (4:01)
Unpacking arguments (10:24)
Unpacking keyword arguments (8:44)
Unpacking keyword arguments (15:52)
Magic methods: __str__ and __repr__ (6:25)
@classmethod and @staticmethod (14:03)
Class inheritance (8:32)
Class composition (6:08)
Type hinting in Python 3.5+ (5:08)
Imports in Python (9:33)
Relative imports in Python (8:52)
Errors in Python (12:47)
Custom error classes (5:04)
First-class functions (7:52)
Simple decorators in Python (7:12)
The 'at' syntax for decorators (3:32)
Decorating functions with parameters (2:24)
Decorators with parameters (4:50)
Mutability in Python (6:03)
Mutable default parameters (and why they're a bad idea) (4:27)
Your first automated software test
Access the code for this section here
Setting up our project (6:42)
Writing our first test (11:09)
Testing dictionary equivalence (5:25)
Writing blog tests and PyCharm run configurations (6:43)
The __repr__ method, and intro to TDD (8:48)
Integration tests and finishing the blog (11:57)
Mocking, patching, and system tests (16:37)
Patching the input method and returning values (7:29)
Taking our patching further (16:03)
The last few patches! (7:07)
The TestCase setUp method (4:36)
Testing a Flask Endpoint
Access the code for this section here
Setting our project up (4:38)
Creating our Flask app (6:50)
Our first System test (9:56)
Refactoring our System Tests (6:32)
REST API Testing, Part I
Access the code for this section here
A look at a REST API with Flask (18:18)
Unit testing a REST API (8:15)
Setting up our generic BaseTest (9:36)
Integration testing a REST API (6:47)
REST API Testing, Part II
Access the code for this section here
Setting up our project (8:45)
Testing foreign key constraints with Python (5:25)
Unit testing models and SQLAlchemy mappers (11:03)
Finishing our Store tests (11:38)
System testing a REST API
Access the code for this section here
Setting project up and creating User model (3:58)
Allowing users to log in (4:10)
Writing our User tests (4:14)
The setUpClass method in the BaseTest (4:59)
Testing user registration (6:41)
Finalising user System tests (7:31)
Writing Store System tests (13:35)
Writing our Item System tests and testing authentication (22:35)
System testing with Postman and Newman
Access the code and Postman files here
Introduction to Postman (9:01)
Our first Posman tests (5:50)
Setting and clearing environment variables in Postman (7:04)
Running a test folder in Postman (7:53)
Advanced PyCharm run configurations (6:08)
Installing Node and Newman (4:43)
Multirun in PyCharm—Running app and tests together (3:01)
Continuous Integration with Travis CI
The code for this section
Installing Git (4:12)
What is a Git repository? (5:27)
A local Git workflow (4:31)
GitHub and remote repositories (5:17)
Adding our project to GitHub (4:51)
What is Travis CI? (2:29)
Adding our repository to Travis (1:38)
The Travis config file and running tests (10:33)
Adding our test badge to the Readme (2:47)
Acceptance testing and browser automation with Selenium
What is acceptance testing? (5:08)
Introduction to our project (3:10)
Our first acceptance test step (10:46)
Getting the Chrome webdriver (3:38)
Verifying everything works (5:44)
Finishing our first test (14:51)
Re-using steps with the regular expression matcher (4:00)
Our first content test (9:18)
Page locators and models (18:36)
The blog page (7:30)
Using pages in navigation (6:45)
Don't over-generalise tests! (2:25)
Waits and timeouts with Selenium (7:33)
Debugging acceptance tests in PyCharm (3:32)
Our final complex scenario (2:46)
Filling in forms with Selenium (13:01)
Access the final code of this section here
Using pages in navigation
Lesson content locked
If you're already enrolled,
you'll need to login
.
Enroll in Course to Unlock