Automated Software Testing with Python

Learn about automated software testing with Python, BDD, Selenium WebDriver, and Postman, focusing on web applications
Automated Software Testing with Python
File Size :
4.03 GB
Total length :
13h 31m



Jose Salvatierra


Last update

Last updated 9/2022



Automated Software Testing with Python

What you’ll learn

Everything you need to know about automated software testing with Python (and how to enjoy testing, too!)
Avoid common pitfalls and implement best practices when writing automated tests
Write complete system tests using Python and tools like Postman
Automate your application testing by setting up a continuous integration pipeline using Travis CI
Browser-based acceptance testing using Behave and Selenium WebDriver

Automated Software Testing with Python


We’ll give you a complete Python refresher, but some previous knowledge of programming will be helpful
Some knowledge of how web applications work
Understanding of REST APIs will be helpful, but not required


Welcome to the most comprehensive course on Automated Software Testing with Python on Udemy.Testing automation doesn’t have to be painful. Software testing is an essential skill for any developer, and I’m here to help you truly understand all types of test automation with Python.I’m Jose, a software engineer and founder of Teclado. The focus of this course is on testing for the web—we’ll be working with REST APIs and web applications, and technologies such as unittest, Postman, and Selenium WebDriver.Fear not though, after going through this course, you’ll be able to take your new testing knowledge and apply it to any project, even non-web projects!What will you work with?This course is jam-packed with all the latest technologies for you to use professionally and in personal projects:The unittest library, Python’s standard automated software testing library;Mocking and patching, two essential tools to reduce dependencies when testing;unit, integration, system, and acceptance testing—all types of testing to have you fully covered;Postman for easy collaboration and testing while developing;Selenium WebDriver for automated browser tests;Git and Travis for continuous integration of your project.Fundamental Software Testing SkillsWe will cover every fundamental software testing skill that you need to know in order to get a job testing or to apply these skills in your existing projects.From things like mocking and patching using the unittest library, which reduce dependencies and turn complex tests to simple ones; to looking at all types of testing: simple unit tests to large system tests and even customer acceptance tests.The Testing PyramidThe Testing Pyramid says you should have a lot of unit tests, slightly fewer integration tests, even fewer system tests, and as few acceptance tests as possible.Throughout the course we work on this concept, making sure that we have full coverage of every component of our system with unit tests. Then we test the dependencies using integration tests. Finally, we cover the entire system and its assumptions using system tests. Of course, we’ll also look at what acceptance testing is, how we come up with acceptance tests, and some of the best ways to write acceptance tests for a web application using Behavior-Driven Development and Selenium WebDriver.Automated Browser Testing with Selenium WebDriverSelenium WebDriver is extremely powerful, particularly when coupled with the efficient and tried-and-tested approach recommended in this course. We’ll design our acceptance tests professionally—just the way you’d do at a software testing job. We’ll use page models, locators, and step definitions to structure the automated tests in a reusable way. The customers will be able to come up with acceptance tests that you can easily translate to code.We’ll also learn about implicit and explicit waits with Selenium WebDriver and Python, a key concept to speed up the runtime of your acceptance tests.Continuous IntegrationWe also cover how you can take automated testing much further in your projects.By implementing a Continuous Integration pipeline that runs your tests whenever you make any changes, you’ll have much higher quality in your projects and not let any pesky bugs pass you by. We’ll look at putting our projects in GitHub and liking the CI pipeline with them.I’m really excited to guide you through this course!Join me in this automated testing journey. I’ll see you on the inside!


Section 1: Welcome!

Lecture 1 How to take this course

Lecture 2 A self-assessment

Lecture 3 Installing Python and PyCharm on Windows

Lecture 4 Installing Python and PyCharm on OS X

Section 2: A Full Python Refresher

Lecture 5 Introduction to this section

Lecture 6 Access the code for this section here

Lecture 7 Variables in Python

Lecture 8 Solution to coding exercise: Variables

Lecture 9 String formatting in Python

Lecture 10 Getting user input

Lecture 11 Writing our first Python app

Lecture 12 Lists, tuples, and sets

Lecture 13 Advanced set operations

Lecture 14 Solution to coding exercise: lists, tuples, sets

Lecture 15 Booleans in Python

Lecture 16 If statements

Lecture 17 The ‘in’ keyword in Python

Lecture 18 If statements with the ‘in’ keyword

Lecture 19 Loops in Python

Lecture 20 Solution to coding exercise: flow control

Lecture 21 List comprehensions in Python

Lecture 22 Dictionaries

Lecture 23 Destructuring variables

Lecture 24 Functions in Python

Lecture 25 Function arguments and parameters

Lecture 26 Default parameter values

Lecture 27 Functions returning values

Lecture 28 Solution to coding exercise: Functions

Lecture 29 Lambda functions in Python

Lecture 30 Dictionary comprehensions

Lecture 31 Solution to coding exercise: dictionaries

Lecture 32 Unpacking arguments

Lecture 33 Unpacking keyword arguments

Lecture 34 Object-Oriented Programming in Python

Lecture 35 Magic methods: __str__ and __repr__

Lecture 36 Solution to coding exercise: classes and objects

Lecture 37 @classmethod and @staticmethod

Lecture 38 Solution to coding exercise: @classmethod and @staticmethod

Lecture 39 Class inheritance

Lecture 40 Class composition

Lecture 41 Type hinting in Python 3.5+

Lecture 42 Imports in Python

Lecture 43 Relative imports in Python

Lecture 44 Errors in Python

Lecture 45 Custom error classes

Lecture 46 First-class functions

Lecture 47 Simple decorators in Python

Lecture 48 The ‘at’ syntax for decorators

Lecture 49 Decorating functions with parameters

Lecture 50 Decorators with parameters

Lecture 51 Mutability in Python

Lecture 52 Mutable default parameters (and why they’re a bad idea)

Lecture 53 Conclusion of this section

Section 3: Your first automated software test

Lecture 54 Introduction to this section

Lecture 55 Access the code for this section here

Lecture 56 Setting up our project

Lecture 57 Important: the naming of test files

Lecture 58 Writing our first test

Lecture 59 Testing dictionary equivalence

Lecture 60 Writing blog tests and PyCharm run configurations

Lecture 61 The __repr__ method, and intro to TDD

Lecture 62 Integration tests and finishing the blog

Lecture 63 Mocking, patching, and system tests

Lecture 64 Patching the input method and returning values

Lecture 65 Taking our patching further

Lecture 66 The last few patches!

Lecture 67 The TestCase setUp method

Lecture 68 Conclusion of this section

Section 4: Testing a Flask Endpoint

Lecture 69 Introduction to this section

Lecture 70 Access the code for this section here

Lecture 71 Setting our project up

Lecture 72 Creating our Flask app

Lecture 73 Our first System test

Lecture 74 Refactoring our System Tests

Lecture 75 Conclusion of this section

Section 5: REST API Testing, Part I

Lecture 76 Introduction to this section

Lecture 77 Access the code for this section here

Lecture 78 A look at a REST API with Flask

Lecture 79 Unit testing a REST API

Lecture 80 Setting up our generic BaseTest

Lecture 81 Integration testing a REST API

Lecture 82 Conclusion of this section

Section 6: REST API Testing, Part II

Lecture 83 Introduction to this section

Lecture 84 Access the code for this section here

Lecture 85 Setting up our project

Lecture 86 Testing foreign key constraints with Python

Lecture 87 Unit testing models and SQLAlchemy mappers

Lecture 88 Finishing our Store tests

Lecture 89 Conclusion of this section

Section 7: System testing a REST API

Lecture 90 Introduction to this section

Lecture 91 Access the code for this section here

Lecture 92 Setting project up and creating User model

Lecture 93 Change to the next lecture’s code

Lecture 94 Allowing users to log in

Lecture 95 Writing our User tests

Lecture 96 The setUpClass method in the BaseTest

Lecture 97 Testing user registration

Lecture 98 Finalising user System tests

Lecture 99 Writing Store System tests

Lecture 100 Writing our Item System tests and testing authentication

Lecture 101 Conclusion of this section

Section 8: System testing with Postman and Newman

Lecture 102 Introduction to this section

Lecture 103 Access the code and Postman files here

Lecture 104 Introduction to Postman

Lecture 105 Our first Posman tests

Lecture 106 Setting and clearing environment variables in Postman

Lecture 107 Running a test folder in Postman

Lecture 108 Advanced PyCharm run configurations

Lecture 109 Installing Node and Newman

Lecture 110 Multirun in PyCharm—Running app and tests together

Lecture 111 Conclusion of this section

Section 9: Continuous Integration with Travis CI

Lecture 112 Introduction to this section

Lecture 113 The code for this section

Lecture 114 Installing Git

Lecture 115 What is a Git repository?

Lecture 116 A local Git workflow

Lecture 117 GitHub and remote repositories

Lecture 118 Adding our project to GitHub

Lecture 119 What is Travis CI?

Lecture 120 Adding our repository to Travis

Lecture 121 The Travis config file and running tests

Lecture 122 Adding our test badge to the Readme

Lecture 123 Conclusion of this section

Section 10: Acceptance testing and browser automation with Selenium

Lecture 124 Introduction to this section

Lecture 125 What is acceptance testing?

Lecture 126 Introduction to our project

Lecture 127 Our first acceptance test step

Lecture 128 Getting the Chrome webdriver

Lecture 129 Verifying everything works

Lecture 130 Finishing our first test

Lecture 131 Re-using steps with the regular expression matcher

Lecture 132 Our first content test

Lecture 133 Page locators and models

Lecture 134 The blog page

Lecture 135 Using pages in navigation

Lecture 136 Don’t over-generalise tests!

Lecture 137 Waits and timeouts with Selenium

Lecture 138 Debugging acceptance tests in PyCharm

Lecture 139 Our final complex scenario

Lecture 140 Filling in forms with Selenium

Lecture 141 Access the final code of this section here

Lecture 142 Conclusion of this section

Section 11: Bonus Material

Lecture 143 Bonus lecture: other courses and next steps

Advanced students who want to learn about testing their Python applications to build more complete solutions,Professionals wanting to learn more about automated software testing in their workplace,Automated software testers and software developers

Course Information:

Udemy | English | 13h 31m | 4.03 GB
Created by: Jose Salvatierra

You Can See More Courses in the Developer >> Greetings from

New Courses

Scroll to Top