Last active
November 8, 2018 06:49
-
-
Save SohanChy/46f1ac0babf517a35d965fefe9ea30ec to your computer and use it in GitHub Desktop.
wrapper for requests module for at-bdd api testing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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