Spaces:
Sleeping
Sleeping
| import pytest | |
| import os | |
| import sys | |
| sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), '..'))) | |
| from unittest.mock import patch | |
| from app import transcribe | |
| # Add the root directory to the Python path so we can import app.py | |
| sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), '..'))) | |
| # Test to check if necessary libraries are installed | |
| def test_libraries_installed(): | |
| try: | |
| import requests | |
| import gradio as gr | |
| import transformers | |
| import time | |
| import os | |
| import tempfile | |
| from huggingface_hub import InferenceClient | |
| except ImportError as e: | |
| pytest.fail(f"Library not installed: {e}") | |
| # Define a constant for the audio file to be used in tests | |
| AUDIO_FILE = "tests/sample.wav" | |
| # Fixture to check if the audio file exists | |
| def check_audio_file(): | |
| print(f"Checking if audio file {AUDIO_FILE} exists...") | |
| assert os.path.exists(AUDIO_FILE), f"Audio file {AUDIO_FILE} does not exist." | |
| return AUDIO_FILE | |
| # Need to login Hugging Face account to use the API | |
| # # Test the transcribe function using the API | |
| # @patch('app.InferenceClient') # Mock the InferenceClient to simulate API response | |
| # def test_transcribe_api(mock_client, check_audio_file): | |
| # # Mocking the return value of the API call | |
| # mock_client.return_value.automatic_speech_recognition.return_value.text = "This is a test transcription." | |
| # # Call the transcribe function with the mock and use_api=True | |
| # result, time_taken = transcribe(check_audio_file, use_api=True) | |
| # # Assert the mocked transcription matches the expected result | |
| # assert result == "This is a test transcription." | |
| # assert time_taken.startswith('Using API it took: ') | |
| # Test the transcribe function using the local pipeline (when use_api=False) | |
| # Mock the local pipeline function | |
| def test_transcribe_local(mock_pipeline, check_audio_file): | |
| # Mocking the local transcription | |
| mock_pipeline.return_value.return_value['text'] = "Now go away or I shall taunt you a second time!" | |
| # Call the transcribe function with the mock and use_api=False | |
| result, time_taken, memory_usage = transcribe(check_audio_file, use_api=False) | |
| print(result) | |
| # Now you can add assertions for each of these values | |
| assert str(result).strip() == "Now go away or I shall taunt you a second time!" | |
| assert "Using local pipeline" in time_taken | |
| assert "RAM Used by code" in memory_usage | |