Sankie005's picture
Upload 434 files
c446951
import json
import os
import requests
from copy import deepcopy
from pathlib import Path
import pytest
import time
api_key = os.environ.get("API_KEY")
port = os.environ.get("PORT", 9001)
base_url = os.environ.get("BASE_URL", "http://localhost")
TESTS = [
{
"description": "DocTR",
"type": "ocr",
"payload": {
"image": {
"type": "url",
"value": "https://media.roboflow.com/swift.png",
}
},
"expected_response": {
"result": "- was thinking earlier today that I have gone through, to use the lingo, eras of listening to each of Swift's Eras. Meta indeed. I started listening to Ms. Swift's music after hearing the Midnights album. A few weeks after hearing the album for the first time, - found myself playing various songs on repeat. I listened to the album in order multiple times.",
"time": 2.61976716702338,
},
}
]
@pytest.mark.parametrize("test", TESTS)
def test_doctr(test):
payload = deepcopy(test["payload"])
payload["api_key"] = api_key
response = requests.post(
f"{base_url}:{port}/doctr/ocr",
json=payload,
)
try:
response.raise_for_status()
data = response.json()
try:
assert "result" in data
except:
print(f"Invalid response: {data}, expected 'result' in data")
try:
assert isinstance(data["result"], str) and len(data["result"]) > 0
except:
print(f"Invalid response: {data['result']}, expected a non-empty string")
try:
assert data["result"] == test["expected_response"]["result"]
except:
print(
f"Invalid response: {data['result']}, expected {test['expected_response']['result']}"
)
except Exception as e:
raise e
@pytest.fixture(scope="session", autouse=True)
def setup():
try:
res = requests.get(f"{base_url}:{port}")
res.raise_for_status()
success = True
except:
success = False
waited = 0
while not success:
print("Waiting for server to start...")
time.sleep(5)
waited += 5
try:
res = requests.get(f"{base_url}:{port}")
res.raise_for_status()
success = True
except:
success = False
if waited > 30:
raise Exception("Test server failed to start")
if __name__ == "__main__":
test_doctr()