Skip to content

Instantly share code, notes, and snippets.

@SohanChy
Last active November 8, 2018 06:49
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save SohanChy/46f1ac0babf517a35d965fefe9ea30ec to your computer and use it in GitHub Desktop.
Save SohanChy/46f1ac0babf517a35d965fefe9ea30ec to your computer and use it in GitHub Desktop.
wrapper for requests module for at-bdd api testing
from config.config import ConfigHolder
import requests
from jsonschema import validate
def get_base_url(api_name):
return ConfigHolder.get_configs(api_name)["DOMAIN"]
def get(endpoint,headers,params = None,api_name = "CORE"):
r = requests.get(get_base_url(api_name) + endpoint, headers = headers, params = params)
return RequestResponse(r,endpoint)
def post(endpoint,headers,data = None, params = None,api_name = "CORE"):
r = requests.post(get_base_url(api_name) + endpoint, headers = headers, data = data, params = params)
return RequestResponse(r,endpoint)
def put(endpoint,headers,data = None, params = None,api_name = "CORE"):
r = requests.put(get_base_url(api_name) + endpoint, headers = headers, data = data, params = params)
return RequestResponse(r,endpoint)
class RequestResponse:
def __init__(self,response, endpoint, noJson = False):
self.response = response
self.endpoint = endpoint
self.json = None
if not noJson:
self.__set_json()
def expect_status(self, status_code):
a_sc = self.response.status_code
assert a_sc == status_code, ("{endpoint} returned status code {a_sc},"+
"expected {sc}").format(endpoint=self.endpoint,sc = status_code,a_sc = a_sc)
return self
def expect_json(self, schema = None):
json = self.response.json()
if(schema):
validate(json,schema)
self.json = json
return self
def expect_success(self):
assert self.json["error"] == False, ("{endpoint} returned Error, expected success".format(endpoint=self.endpoint))
return self
def expect_error(self,error = True):
assert self.json["error"] == error
return self
def expect_message(self, message):
assert self.json["message"] == message
return self
def get_from_json(self, key):
keyList = key.split(".")
val = self.json
for key in keyList:
val = val.get(key)
if val == self.json:
return None
return val
def __set_json(self):
if(self.json == None):
self.expect_json()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment