mirror of
https://github.com/arnaucube/provoj.git
synced 2026-02-06 19:26:42 +01:00
provoj
This commit is contained in:
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
__pycache__
|
||||
*.pyc
|
||||
126
README.md
Normal file
126
README.md
Normal file
@@ -0,0 +1,126 @@
|
||||
# provoj
|
||||
|
||||
Simple library to check the endpoints of an RESTful API.
|
||||
|
||||
### Usage
|
||||
Import the provoj library, and the requests library
|
||||
```python
|
||||
import provoj
|
||||
import requests
|
||||
```
|
||||
|
||||
Define a new test
|
||||
```python
|
||||
test = provoj.NewTest("Testing some websites")
|
||||
```
|
||||
|
||||
Check if two variables are equal
|
||||
```python
|
||||
a = "hello"
|
||||
b = "world"
|
||||
test.equal("comparing a and b", a, b)# test.equal(check description, variable1, variable2)
|
||||
```
|
||||
|
||||
Check if two variables are not equal
|
||||
```python
|
||||
a = "hello"
|
||||
b = "world"
|
||||
test.notequal("comparing a and b", a, b)# test.notequal(check description, variable1, variable2)
|
||||
```
|
||||
|
||||
Check if first variable is bigger than the second
|
||||
```python
|
||||
a = 2
|
||||
b = 3
|
||||
test.bigger("comparing a and b", a, b)# test.bigger(check description, variable1, variable2)
|
||||
```
|
||||
|
||||
Check if first variable is smaller than the second
|
||||
```python
|
||||
a = 2
|
||||
b = 3
|
||||
test.smaller("comparing a and b", a, b)# test.smaller(check description, variable1, variable2)
|
||||
```
|
||||
|
||||
Check if the length of a variable
|
||||
```python
|
||||
animals = ["cat", "dog", "racoon"]
|
||||
test.length("checking the length of the array animals", animals, 3)# test.length(check description, variable1, length)
|
||||
```
|
||||
|
||||
Check for request status
|
||||
```python
|
||||
r = requests.get("https://api.github.com/users/arnaucode/repos")
|
||||
test.status("get api.github.com/users/arnaucode/repos", r)# test.status(check description, request_response)
|
||||
```
|
||||
|
||||
### Full example
|
||||
```python
|
||||
import provoj
|
||||
import requests
|
||||
|
||||
|
||||
test1 = provoj.NewTest("testing some function")
|
||||
|
||||
a = "hello"
|
||||
b = "world"
|
||||
c = "hello"
|
||||
test1.equal("comparing a and b", a, b)
|
||||
test1.notequal("comparing a and b", a, b)
|
||||
test1.equal("comparing a and c", a, c)
|
||||
|
||||
x = 2
|
||||
y = 3
|
||||
test1.bigger("comparing x and y", x, y)
|
||||
test1.smaller("comparing x and y", x, y)
|
||||
|
||||
test1.length("checking length", a, 2)
|
||||
test1.length("checking length", a, 5)
|
||||
|
||||
animals = ["cat", "dog", "racoon"]
|
||||
test1.length("checking the length of the array animals", animals, 3)
|
||||
|
||||
test1.printScores()
|
||||
|
||||
|
||||
t2 = provoj.NewTest("Testing some websites")
|
||||
|
||||
r = requests.get("https://www.github.com")
|
||||
t2.rStatus("get github", r)
|
||||
|
||||
r = requests.get("https://arnaucode.com")
|
||||
t2.rStatus("get arnaucode.com", r)
|
||||
|
||||
r = requests.get("https://arnaucode.com/fake")
|
||||
t2.rStatus("get arnaucode.com/fake_path", r)
|
||||
|
||||
r = requests.get("https://arnaucode.com/blog")
|
||||
t2.rStatus("get arnaucode.com/blog", r)
|
||||
|
||||
t2.printScores()
|
||||
|
||||
|
||||
tGithub = provoj.NewTest("Github API tests")
|
||||
|
||||
r = requests.get("https://api.github.com")
|
||||
tGithub.rStatus("get api.github", r)
|
||||
r = requests.get("https://api.github.com/users/arnaucode")
|
||||
tGithub.rStatus("get https://api.github.com/users/arnaucode", r)
|
||||
jsonResp = r.json()
|
||||
tGithub.equal("checking quantity of followers", jsonResp["followers"], 100)
|
||||
tGithub.equal("checking quantity of public_repos", jsonResp["public_repos"], 77)
|
||||
|
||||
r = requests.get("https://api.github.com/users/arnaucode/repos")
|
||||
tGithub.rStatus("get https://api.github.com/users/arnaucode/repos", r)
|
||||
jsonResp = r.json()
|
||||
tGithub.length("checking length of repos", jsonResp, 30)
|
||||
tGithub.equal("checking first repo", jsonResp[0]["name"], "argos")
|
||||
tGithub.equal("checking second repo", jsonResp[1]["name"], "coffeeminer")
|
||||
tGithub.equal("checking third repo", jsonResp[2]["name"], "bc")
|
||||
|
||||
tGithub.printScores()
|
||||
```
|
||||
|
||||
Output example:
|
||||
|
||||

|
||||
65
exampleTest.py
Normal file
65
exampleTest.py
Normal file
@@ -0,0 +1,65 @@
|
||||
import provoj
|
||||
import requests
|
||||
|
||||
|
||||
test1 = provoj.NewTest("testing some function")
|
||||
|
||||
a = "hello"
|
||||
b = "world"
|
||||
c = "hello"
|
||||
|
||||
test1.equal("comparing a and b", a, b)
|
||||
test1.notequal("comparing a and b", a, b)
|
||||
|
||||
test1.equal("comparing a and c", a, c)
|
||||
|
||||
x = 2
|
||||
y = 3
|
||||
test1.bigger("comparing x and y", x, y)
|
||||
test1.smaller("comparing x and y", x, y)
|
||||
|
||||
test1.length("checking length", a, 2)
|
||||
test1.length("checking length", a, 5)
|
||||
|
||||
animals = ["cat", "dog", "racoon"]
|
||||
test1.length("checking the length of the array animals", animals, 3)
|
||||
|
||||
test1.printScores()
|
||||
|
||||
|
||||
t2 = provoj.NewTest("Testing some websites")
|
||||
|
||||
r = requests.get("https://www.github.com")
|
||||
t2.rStatus("get github", r)
|
||||
|
||||
r = requests.get("https://arnaucode.com")
|
||||
t2.rStatus("get arnaucode.com", r)
|
||||
|
||||
r = requests.get("https://arnaucode.com/fake")
|
||||
t2.rStatus("get arnaucode.com/fake_path", r)
|
||||
|
||||
r = requests.get("https://arnaucode.com/blog")
|
||||
t2.rStatus("get arnaucode.com/blog", r)
|
||||
|
||||
t2.printScores()
|
||||
|
||||
|
||||
tGithub = provoj.NewTest("Github API tests")
|
||||
|
||||
r = requests.get("https://api.github.com")
|
||||
tGithub.rStatus("get api.github", r)
|
||||
r = requests.get("https://api.github.com/users/arnaucode")
|
||||
tGithub.rStatus("get https://api.github.com/users/arnaucode", r)
|
||||
jsonResp = r.json()
|
||||
tGithub.equal("checking quantity of followers", jsonResp["followers"], 100)
|
||||
tGithub.equal("checking quantity of public_repos", jsonResp["public_repos"], 77)
|
||||
|
||||
r = requests.get("https://api.github.com/users/arnaucode/repos")
|
||||
tGithub.rStatus("get https://api.github.com/users/arnaucode/repos", r)
|
||||
jsonResp = r.json()
|
||||
tGithub.length("checking length of repos", jsonResp, 30)
|
||||
tGithub.equal("checking first repo", jsonResp[0]["name"], "argos")
|
||||
tGithub.equal("checking second repo", jsonResp[1]["name"], "coffeeminer")
|
||||
tGithub.equal("checking third repo", jsonResp[2]["name"], "bc")
|
||||
|
||||
tGithub.printScores()
|
||||
BIN
provoj-example.gif
Normal file
BIN
provoj-example.gif
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 875 KiB |
112
provoj.py
Normal file
112
provoj.py
Normal file
@@ -0,0 +1,112 @@
|
||||
import math
|
||||
import datetime
|
||||
|
||||
class NewTest(object):
|
||||
def __init__(self, title=None):
|
||||
# define the scores dictionary, and initialize
|
||||
self.scores = {}
|
||||
self.scores["success"] = 0
|
||||
self.scores["error"] = 0
|
||||
self.time = datetime.datetime.now()
|
||||
if title != None:
|
||||
self.title = title
|
||||
print("")
|
||||
pc.blue("- " + title)
|
||||
else:
|
||||
self.title = ""
|
||||
print("")
|
||||
pc.blue("- unnamed test")
|
||||
def equal(self, action, a, b):
|
||||
if a != b:
|
||||
pc.error(action + " - Error, '" + str(a) + "' should be equal to '" + str(b) + "'")
|
||||
self.scores["error"] += 1
|
||||
else:
|
||||
pc.checked(action)
|
||||
self.scores["success"] += 1
|
||||
def notequal(self, action, a, b):
|
||||
if a == b:
|
||||
pc.error(action + " - Error, '" + str(a) + "' should be not equal to '" + str(b) + "'")
|
||||
self.scores["error"] += 1
|
||||
else:
|
||||
pc.checked(action)
|
||||
self.scores["success"] += 1
|
||||
def bigger(self, action, a, b):
|
||||
if a < b:
|
||||
pc.error(action + " - Error, '" + str(a) + "' should be bigger than '" + str(b) + "'")
|
||||
self.scores["error"] += 1
|
||||
else:
|
||||
pc.checked(action)
|
||||
self.scores["success"] += 1
|
||||
def smaller(self, action, a, b):
|
||||
if a > b:
|
||||
pc.error(action + " - Error, '" + str(a) + "' should be smaller than '" + str(b) + "'")
|
||||
self.scores["error"] += 1
|
||||
else:
|
||||
pc.checked(action)
|
||||
self.scores["success"] += 1
|
||||
|
||||
def length(self, action, a, l):
|
||||
if len(a) != l:
|
||||
pc.error(action + " - Error, actual length is '" + str(len(a)) + "', expected to be '" + str(l) + "'")
|
||||
self.scores["error"] += 1
|
||||
else:
|
||||
pc.checked(action)
|
||||
self.scores["success"] += 1
|
||||
|
||||
def rStatus(self, action, r, verbose=False):
|
||||
if r.status_code < 200 or r.status_code > 299:
|
||||
if verbose:
|
||||
pc.error(action + " - Error " + str(r.status_code) + ": " + r.text)
|
||||
else:
|
||||
pc.error(action + " - Error " + str(r.status_code))
|
||||
|
||||
self.scores["error"] += 1
|
||||
else:
|
||||
pc.checked(action)
|
||||
self.scores["success"] += 1
|
||||
|
||||
def printScores(self):
|
||||
pc.purple(" Test title: " + self.title)
|
||||
score = math.ceil(( self.scores["success"]/(self.scores["success"]+self.scores["error"]) )*100)
|
||||
elapsed = datetime.datetime.now() - self.time
|
||||
pc.purple(" Score: " + str(score)
|
||||
+ "% (" + str(self.scores["success"]) + "/" + str(self.scores["success"] + self.scores["error"]) + ")"
|
||||
+ " Time benchmark: " + str(elapsed))
|
||||
|
||||
|
||||
'''
|
||||
code to print the colors in the terminal
|
||||
'''
|
||||
checkIcon = "✓ "
|
||||
errorIcon = "❌ "
|
||||
|
||||
class pc:
|
||||
RED = '\033[31m'
|
||||
GREEN = '\033[32m'
|
||||
BLUE = '\033[94m'
|
||||
PURPLE = '\033[95m'
|
||||
END = '\033[0m'
|
||||
|
||||
@classmethod
|
||||
def red(cls, s, **kwargs):
|
||||
print(cls.RED + s + cls.END, **kwargs)
|
||||
|
||||
@classmethod
|
||||
def green(cls, s, **kwargs):
|
||||
print(cls.GREEN + s + cls.END, **kwargs)
|
||||
|
||||
@classmethod
|
||||
def blue(cls, s, **kwargs):
|
||||
print(cls.BLUE + s + cls.END, **kwargs)
|
||||
|
||||
@classmethod
|
||||
def purple(cls, s, **kwargs):
|
||||
print(cls.PURPLE + s + cls.END, **kwargs)
|
||||
|
||||
@classmethod
|
||||
def checked(cls, s, **kwargs):
|
||||
print(" " + cls.GREEN + checkIcon + s + cls.END, **kwargs)
|
||||
|
||||
@classmethod
|
||||
def error(cls, s, **kwargs):
|
||||
print(" " + cls.RED + errorIcon + s + cls.END, **kwargs)
|
||||
Reference in New Issue
Block a user