Mô tả

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 Skills

We 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 Pyramid

The 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 WebDriver

Selenium 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 Integration

We 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!

Bạn sẽ học được gì

Yêu cầu

Nội dung khoá học

11 sections

Welcome!

3 lectures
How to take this course
00:36
Installing Python and PyCharm on Windows
00:24
Installing Python and PyCharm on OS
00:20

A Full Python Refresher

56 lectures
Introduction to this section
01:01
Access the code for this section here
00:24
Variables in Python
08:26
Variables (Python 3.10)
1 question
Solution to coding exercise: Variables
02:00
String formatting in Python
06:26
Getting user input
05:16
Writing our first Python app
03:19
Lists, tuples, and sets
06:31
Advanced set operations
04:39
Lists, tuples, and sets (Python 3.10)
1 question
Solution to coding exercise: lists, tuples, sets
04:40
Booleans in Python
04:59
If statements
08:17
The 'in' keyword in Python
02:02
If statements with the 'in' keyword
08:18
Loops in Python
11:07
Flow control—loops and ifs (Python 3.10)
1 question
Solution to coding exercise: flow control
03:08
List comprehensions in Python
07:24
Dictionaries
08:31
Destructuring variables
08:28
Functions in Python
10:41
Function arguments and parameters
07:40
Default parameter values
03:54
Functions returning values
07:19
Functions (Python 3.10)
1 question
Solution to coding exercise: Functions
02:30
Lambda functions in Python
07:52
Dictionary comprehensions
04:01
Dictionaries and students (Python 3.10)
1 question
Solution to coding exercise: dictionaries
06:16
Unpacking arguments
10:24
Unpacking keyword arguments
08:44
Object-Oriented Programming in Python
15:52
Magic methods: __str__ and __repr__
06:25
Classes and objects (Python 3.10)
1 question
Solution to coding exercise: classes and objects
05:04
@classmethod and @staticmethod
14:03
@classmethod and @staticmethod (Python 3.10)
1 question
Solution to coding exercise: @classmethod and @staticmethod
05:54
Class inheritance
08:32
Class composition
06:08
Type hinting in Python 3.5+
05:08
Imports in Python
09:33
Relative imports in Python
08:52
Errors in Python
12:47
Custom error classes
05:04
First-class functions
07:52
Simple decorators in Python
07:12
The 'at' syntax for decorators
03:33
Decorating functions with parameters
02:24
Decorators with parameters
04:50
Mutability in Python
06:03
Mutable default parameters (and why they're a bad idea)
04:27
Conclusion of this section
00:37

Your first automated software test

15 lectures
Introduction to this section
00:24
Access the code for this section here
00:25
Setting up our project
06:42
Important: the naming of test files
00:29
Writing our first test
11:09
Testing dictionary equivalence
05:25
Writing blog tests and PyCharm run configurations
06:43
The __repr__ method, and intro to TDD
08:48
Integration tests and finishing the blog
11:57
Mocking, patching, and system tests
16:37
Patching the input method and returning values
07:29
Taking our patching further
16:03
The last few patches!
07:07
The TestCase setUp method
04:36
Conclusion of this section
00:27

Testing a Flask Endpoint

7 lectures
Introduction to this section
00:26
Access the code for this section here
00:25
Setting our project up
04:38
Creating our Flask app
06:50
Our first System test
09:56
Refactoring our System Tests
06:32
Conclusion of this section
00:33

REST API Testing, Part I

7 lectures
Introduction to this section
00:35
Access the code for this section here
00:30
A look at a REST API with Flask
18:18
Unit testing a REST API
08:15
Setting up our generic BaseTest
09:36
Integration testing a REST API
06:47
Conclusion of this section
00:25

REST API Testing, Part II

7 lectures
Introduction to this section
00:20
Access the code for this section here
00:30
Setting up our project
08:45
Testing foreign key constraints with Python
05:25
Unit testing models and SQLAlchemy mappers
11:03
Finishing our Store tests
11:38
Conclusion of this section
00:24

System testing a REST API

12 lectures
Introduction to this section
00:28
Access the code for this section here
00:26
Setting project up and creating User model
03:58
Change to the next lecture's code
00:26
Allowing users to log in
04:10
Writing our User tests
04:14
The setUpClass method in the BaseTest
04:59
Testing user registration
06:41
Finalising user System tests
07:31
Writing Store System tests
13:35
Writing our Item System tests and testing authentication
22:35
Conclusion of this section
00:26

System testing with Postman and Newman

10 lectures
Introduction to this section
00:40
Access the code and Postman files here
00:23
Introduction to Postman
09:01
Our first Posman tests
05:50
Setting and clearing environment variables in Postman
07:04
Running a test folder in Postman
07:53
Advanced PyCharm run configurations
06:08
Installing Node and Newman
04:43
Multirun in PyCharm—Running app and tests together
03:01
Conclusion of this section
00:36

Continuous Integration with Travis CI

12 lectures
Introduction to this section
00:38
The code for this section
00:13
Installing Git
04:12
What is a Git repository?
05:27
A local Git workflow
04:31
GitHub and remote repositories
05:17
Adding our project to GitHub
04:51
What is Travis CI?
02:29
Adding our repository to Travis
01:38
The Travis config file and running tests
10:33
Adding our test badge to the Readme
02:47
Conclusion of this section
00:38

Acceptance testing and browser automation with Selenium

19 lectures
Introduction to this section
00:40
What is acceptance testing?
05:08
Introduction to our project
03:10
Our first acceptance test step
10:46
Getting the Chrome webdriver
03:38
Verifying everything works
05:44
Finishing our first test
14:51
Re-using steps with the regular expression matcher
04:00
Our first content test
09:18
Page locators and models
18:36
The blog page
07:30
Using pages in navigation
06:45
Don't over-generalise tests!
02:25
Waits and timeouts with Selenium
07:33
Debugging acceptance tests in PyCharm
03:32
Our final complex scenario
02:46
Filling in forms with Selenium
13:01
Access the final code of this section here
00:07
Conclusion of this section
00:41

Bonus Material

1 lectures
Bonus lecture
00:50

Đánh giá của học viên

Chưa có đánh giá
Course Rating
5
0%
4
0%
3
0%
2
0%
1
0%

Bình luận khách hàng

Viết Bình Luận

Bạn đánh giá khoá học này thế nào?

image

Đăng ký get khoá học Udemy - Unica - Gitiho giá chỉ 50k!

Get khoá học giá rẻ ngay trước khi bị fix.