Spaces:
Running
Running
alessandro trinca tornidor
feat: port whisper and faster-whisper support from https://github.com/Thiagohgl/ai-pronunciation-trainer
85b7206
import os | |
import platform | |
import unittest | |
import json | |
## permit to import from parent directory also in | |
import sys | |
from pathlib import Path | |
parent = Path(__file__).parent.parent | |
sys.path.append(str(parent)) | |
from tests import EVENTS_FOLDER, set_seed | |
from webApp import app | |
from constants import ALLOWED_ORIGIN, app_logger | |
class TestWebApp(unittest.TestCase): | |
def setUp(self): | |
self.app = app.test_client() | |
if platform.system() == "Windows" or platform.system() == "Win32": | |
os.environ["PYTHONUTF8"] = "1" | |
os.environ["IS_TESTING"] = "TRUE" | |
def tearDown(self): | |
if platform.system() == "Windows" or platform.system() == "Win32" and "PYTHONUTF8" in os.environ: | |
del os.environ["PYTHONUTF8"] | |
del os.environ["IS_TESTING"] | |
def test_main_route(self): | |
response = self.app.get('/') | |
self.assertEqual(response.status_code, 200) | |
self.assertIn(b'<html', response.data) | |
def test_getNext(self): | |
set_seed() | |
input_data = {"category": "1", "language": "de"} | |
response = self.app.post('/getSample', json=input_data, content_type='application/json') | |
self.assertEqual(response.status_code, 200) | |
output_data = response.data.decode("utf-8") | |
output_data = json.loads(output_data) | |
self.assertEqual( | |
output_data, { | |
'ipa_transcript': 'ziː vɪl niːmandɛːn haɪ̯raːtɛːn.', | |
'real_transcript': ['Sie will niemanden heiraten.'], | |
'transcript_translation': '' | |
}) | |
def test_GetAccuracyFromRecordedAudio(self): | |
set_seed() | |
with open(EVENTS_FOLDER / "GetAccuracyFromRecordedAudio.json", "r") as src: | |
inputs_outputs = json.load(src) | |
inputs = inputs_outputs["inputs"] | |
inputs_by_language = inputs["en"] | |
loaded_body = inputs_by_language["body"] | |
input_data = json.loads(loaded_body) | |
response = self.app.post('/GetAccuracyFromRecordedAudio', json=input_data, content_type='application/json') | |
self.assertEqual(response.status_code, 200) | |
output_data = response.data.decode("utf-8") | |
output_data = json.loads(output_data) | |
for k in [ | |
"real_transcript", "ipa_transcript", "pronunciation_accuracy", "real_transcripts", "matched_transcripts", | |
"pair_accuracy_category", "start_time", "end_time", "is_letter_correct_all_words" | |
]: | |
self.assertIn(k, output_data) | |
def test_GetAccuracyFromRecordedAudio_raises_exception(self): | |
set_seed() | |
with open(EVENTS_FOLDER / "GetAccuracyFromRecordedAudio.json", "r") as src: | |
inputs_outputs = json.load(src) | |
inputs = inputs_outputs["inputs"] | |
inputs_by_language = inputs["en"] | |
loaded_body = inputs_by_language["body"] | |
input_data = json.loads(loaded_body) | |
input_data["language"] = "wrong_language" | |
response = self.app.post('/GetAccuracyFromRecordedAudio', json=input_data, content_type='application/json') | |
self.assertEqual(response.status_code, 200) | |
output_data = response.data.decode("utf-8") | |
output_data = json.loads(output_data) | |
self.assertEqual(output_data, {}) | |
def test_change_model(self): | |
from constants import MODEL_NAME_TESTING | |
set_seed() | |
input_data = {"modelName": MODEL_NAME_TESTING} | |
response = self.app.post('/changeModel', json=input_data, content_type='application/json') | |
self.assertEqual(response.status_code, 200) | |
output_data = response.data.decode("utf-8") | |
self.assertEqual(output_data, f'Model changed to {input_data["modelName"]}!') | |
def test_change_model_raises_exception(self): | |
set_seed() | |
input_data = {"modelName": "wrong_model"} | |
response = self.app.post('/changeModel', json=input_data, content_type='application/json') | |
self.assertEqual(response.status_code, 500) | |
output_data = response.data.decode("utf-8") | |
self.assertEqual(output_data, 'Internal server error') | |
if __name__ == '__main__': | |
unittest.main() | |