Python API test automation framework (Part 1) Introduction, Setup and Installation
Logos in header image sources: Python, Requests, JSON, HTTP
Hi there, 👋
I am currently building 🏗️ a course for Test automation university on “Building an API test framework with Python” and had this idea of why not have a blog for each chapter as I go along to serve as a supplement to the video course content while also being accessible to folks who are more inclined to read blogs and ensuring I personally stay focused and don’t procrastinate on this 😁. You are all there to hold me accountable to do this. 🤝
These posts are gonna come out in order as the course is being developed and much before the actual course is published. The course is gonna dive deep into most of the aspects mentioned here. Hopefully these would provide the test automation community valuable insights and guidance on how to approach building API automation frameworks at their workplace using python
Below is a non exhaustive outline of what I have planned for this course at the moment:
- Chapter 1: Setup up python and virtualenv on mac or windows
- Chapter 2: Making HTTP requests
- Chapter 3: Adding fluent assertions
- Chapter 4: Working with XML
- Chapter 5: Working with JSON
- Chapter 6: API data/schema validation
- Chapter 7: Adding reporting
- Chapter 8: Running tests in parallel
This is also a chance for you to interact and provide ideas about which direction this course could
take. Your perspective would be very valuable. Feel free to provide your comments using comment
section below or DM me on twitter @automationhacks
in case you would like to get some thing else
added as well within this problem space.
Introduction to building API automation framework with Python
Writing Functional API automation is a great way of getting fast and stable feedback about your system as well as exercise business flows and logic as compared to UI tests. In this course we would see the building blocks for a robust API automation framework using python to test your API’s.
We would cover automation development practices that you can follow and use different useful libraries in the python ecosystem to build our framework.
All the source code would be available on GitHub course-api-framework-python
Setup and installations
Before we begin building our framework for API testing, let’s make sure we have the basic dependencies already setup
If you are completely new to Python/pytest then I would recommend you check out the courses on Test automation university to familiarize yourself with the basics since this course assumes you have some experience with python already
Let’s dive in now 🤿
Setting up python and dependencies
As a prerequisite to this tutorial, Please ensure you have python3
installed on your machine. If
not already installed, you can go to python.org and download
the latest version of python for your OS and run the installer
Alternatively if you are on mac/linux and have homebrew/linuxbrew already installed then you can install python using below command
brew install python
Let’s test to make sure python is installed and available from the command line
python3 --version
Finally execute below to ensure you can access python REPL and you are all set
python3
Python 3.8.6 (default, Oct 21 2020, 11:06:14)
[Clang 11.0.3 (clang-1103.0.32.62)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>
Setting up virtualenv
With python setup. The next step that we need to take care of is to set up a virtualenv in which we can install all the required packages. You can just install modules directly on your base python installation but its an accepted best practice to use virtualenvs
I’ve already written a blog with details on how to you use pipenv
to create a virtualenv for your
project, please follow the same and setup pipenv and an empty env
you can refer to it here
With this, we have our virtualenv ready for use.
Install requests
To install any python module using pipenv you can use below command
pipenv install <module_name>
Let’s install requests
which we would use to actually make HTTP requests.
pipenv install requests
We can always check the package is installed by executing below (while inside the virtualenv)
pip freeze
We will also use pytest as the test framework of choice
pipenv install pytest
If you use pycharm as the editor of choice then you would need to select the newly created virtualenv as the project interpreter by following below steps
- Open Preferences/Settings
- Search for Python interpreter
- Click on Gear icon and then click on Add
- Select Existing environment
- Select path to bin/python for the created virtualenv (usually in
WORKON_HOME
dir setup in your shell)
Also, let’s make sure pycharm knows that we intend to use pytest as the default test framework to run cases by going to
- Open preferences/settings
- Search runner
- Under
Python integrated tools > Testing
select default test runner as pytest
Conclusion
And that all we need to get started with building our framework. We will add other modules when we discuss them in further chapters. Stay tuned for the next post on how to make an HTTP request using requests module
You can find the complete code for this course on Github at automationhacks/course-api-framework-python
If you found this post useful, Do share it with a friend or colleague and if you have thoughts, I’d be more than happy to chat over at twitter or comments. Until next time. Happy Testing and Coding.
Comments