id | title | sidebar_label | description | tags | keyword | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
flask-redis |
Sample Library App (Flask + Redis) |
Flask + Redis |
This application is a simple Library API built using Flask and Redis for data storage. It allows you to perform basic CRUD (Create, Read, Update, Delete) operations on Movie records. |
|
|
🪄 Dive into the world of Student CRUD Apps and see how seamlessly Keploy integrated with Flask and Redis. Buckle up, it's gonna be a fun ride! 🎢
import InstallationGuide from '../concepts/installation.md'
git clone https://github.com/keploy/samples-python.git && cd samples-python/flask-redis
Depending on your OS, choose your adventure:
We are going to run the application the following way
We will be using Docker compose to run the application as well as Mongo on Docker container.
Capture the test-cases-
keploy record -c "docker compose up" --container-name "flask-web" --buildDelay 50
🔥Make some API calls. Postman, Hoppscotch or even curl - take your pick!
Let's make URLs short and sweet:
To generate testcases we just need to make some API calls.
- Make a POST request:
curl -X POST http://localhost:5000/books/ \
-H "Content-Type: application/json" \
-d '{"title": "1984", "author": "George Orwell"}'
- Make a GET request:
curl -X GET "http://localhost:5000/books/?page=1&limit=10"
- Make a PUT request:
curl -X PUT http://localhost:5000/books/1 \
-H "Content-Type: application/json" \
-d '{"title": "1984 - Updated", "author": "George Orwell"}'
- Make a DELETE request:
curl -X DELETE http://localhost:5000/books/1
And once you are done, you can stop the recording and give yourself a pat on the back! With that simple spell, you've conjured up a test case with a mock! Explore the keploy directory and you'll discover your handiwork in tests
directory and mocks.yml
.
version: api.keploy.io/v1beta1
kind: Redis
name: mock-0
spec:
metadata:
type: config
redisrequests:
- origin: client
message:
- type: string
data: "*4\r\n$6\r\nCLIENT\r\n$7\r\nSETINFO\r\n$8\r\nLIB-NAME\r\n$8\r\nredis-py\r\n"
redisresponses:
- origin: server
message:
- type: string
data: "+OK\r\n"
reqtimestampmock: 2024-08-02T22:15:10.6084523Z
restimestampmock: 2024-08-02T22:15:10.608930466Z
---
keploy test -c 'sudo docker compose up' --containerName "flask-web" --delay 10
You can also check the test summary from your cli
<=========================================>
COMPLETE TESTRUN SUMMARY.
Total tests: 11
Total test passed: 10
Total test failed: 1
Total time taken: "15.13 s"
Test Suite Name Total Test Passed Failed Time Taken
"test-set-0" 6 6 0 "5.06 s"
"test-set-1" 1 1 0 "5.02 s"
"test-set-2" 4 3 1 "5.04 s"
<=========================================>
- While running the application you might have some ports up and running that you are trying to access again. This would throw a EBPF error
You can check the ports from the below command and
sudo lsof -p
If you want to check which process is using a specific port (e.g., port 5000), use:
sudo lsof -i :5000
Once you have identified the PID of the process using the port you need, you can terminate the process with the kill command:
sudo kill -9 <PID>
- ERROR: for redis 'ContainerConfig'
The KeyError: 'ContainerConfig' issue you're encountering with Docker Compose is indicative of a problem with the Docker Compose file or its version compatibility.
Here’s how you can address and troubleshoot this error:
sudo apt-get update
sudo apt-get install docker-compose
Check your compose file's permissions
ls -l docker-compose.yml
Re-run the record or test command from above