Last active
July 8, 2021 01:57
-
-
Save cryocaustik/03b1441f3cf5bb1f7085e3e491389a01 to your computer and use it in GitHub Desktop.
Example of using python for RESTful data validation
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
import requests | |
import logging | |
from datetime import datetime | |
from pathlib import Path | |
LOG_DIR = Path("./logs") | |
logger = logging.getLogger("py-api-data-validation") | |
logging.basicConfig( | |
level=logging.INFO, | |
filename=LOG_DIR / | |
"{nm}_{dt}.log".format( | |
nm=logger.name, dt=datetime.now().strftime("%Y-%m-%d")), | |
filemode="a", | |
format="%(asctime)s - %(levelname)s - %(name)s - %(message)s", | |
datefmt="%Y-%m-%d %H:%M:%S", | |
) | |
def error(caller, err, msgs=[]): | |
err_msg = f"{caller} - {type(err).__name__} - {err.args}" | |
logger.error(err_msg) | |
print(err_msg) | |
if msgs and len(msgs) > 0: | |
for m in msgs: | |
_m = f"{caller} - {m}" | |
logger.error(_m) | |
print(_m) | |
def get(url): | |
try: | |
response = requests.get(url) | |
if response.status_code != 200: | |
response.raise_for_status() | |
return response.json() | |
except Exception as err: | |
error("get", err, [{"url": url}]) | |
def test_1(): | |
try: | |
data = get("https://reqres.in/api/users/2") | |
assert "data" in data, "data not found in response json" | |
expected_keys = ["id", "email", "first_namee"] | |
for ek in expected_keys: | |
assert ek in data["data"], f"{ek} not found in data" | |
return True | |
except AssertionError as err: | |
error("test_1 - assert", err) | |
return False | |
except Exception as err: | |
error("test_1", err) | |
return False | |
if __name__ == "__main__": | |
print(f"test 1 pass: {test_1()}") |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment