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)
|