Unit Tests
- Use Python and the 
pytest package to test our previously created functions. 
- Run the tests through 
VSCode (in the Testing Menu) or the shell. 
- It primarily tests whether the function works as expected,
assert actual == expected, rather than verifying the entire process's success. 
- For better file organization, we may create a 
tests folder as a Python package (__init__.py file) and put the unit tests (files and code) inside it. 
Integration Tests
- Tests the whole flow and process, as we compare the actual and expected responses.
 
- Could use the 
DeepDiff Python library to compare 2 dictionaries (JSON documents). 
- Run the tests through the 
shell. 
- In the case of comparing decimal numbers, we could limit it to only a specific number of digits (e.g., 1 digit after the decimal point).
 
- For better file organization, we may create an 
integration-tests folder and put the integration tests (files and code) inside it. 
- We may automate the integration test by creating a 
.sh file to:
- Change to a specific directory
 
- Run the 
bash command 
- Set and export the environment variables
 
- Build the Docker image (could do so with a specific identifier using 
DATE in bash) 
- Run the 
docker-compose file 
- Run the integration test file
 
- Close (Down/Terminate) the 
up services in the docker-compose file 
- Return with a non-zero response in case of test fail (As it may return 0 even if the test fails, as the script finishes/is executed successfully)
 
 
Cloud Tests
- We’ll use 
LocalStack, a Python package, to test things locally (such as the cloud, e.g., AWS S3, AWS Kinesis, etc.) through Docker. 
- It could be automated by appending it to the integration test folder and scripts.
 
Code Quality
PEP 8
- It’s a Python Enhancement Proposal that the Python community agreed on to follow some style guidelines in Python implementation.
 
- There’s also a Python package (Now called 
pycodestyle) to be used as a linter. 
Linting