Update test_api.py
Fixed an encoding issue for Windows machines receiving an error due to Lines 24-27: `UnicodeDecodeError: 'charmap' codec can't decode byte 0x9d in position 119434: character maps to <undefined>`. Adjusted test_api.py to fix an issue when the format=None isnt passed with mock test raising: `AssertionError: get_transcript('video_id_1', ['de', 'en'], None, None) call not found` Added `import json` to convert test data for json data into a string for 1 or many json transcripts to keep in line with how the formatters are eventually returned as strings.
This commit is contained in:
parent
dca4021dd7
commit
ac75f906e6
|
@ -1,6 +1,6 @@
|
||||||
from unittest import TestCase
|
from unittest import TestCase
|
||||||
from mock import patch
|
from mock import patch
|
||||||
|
import json
|
||||||
import os
|
import os
|
||||||
|
|
||||||
import requests
|
import requests
|
||||||
|
@ -21,7 +21,10 @@ from youtube_transcript_api import (
|
||||||
|
|
||||||
|
|
||||||
def load_asset(filename):
|
def load_asset(filename):
|
||||||
with open('{dirname}/assets/{filename}'.format(dirname=os.path.dirname(__file__), filename=filename)) as file:
|
filepath = '{dirname}/assets/{filename}'.format(
|
||||||
|
dirname=os.path.dirname(__file__), filename=filename)
|
||||||
|
|
||||||
|
with open(filepath, 'r', encoding='utf-8') as file:
|
||||||
return file.read()
|
return file.read()
|
||||||
|
|
||||||
|
|
||||||
|
@ -47,11 +50,11 @@ class TestYouTubeTranscriptApi(TestCase):
|
||||||
|
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
transcript,
|
transcript,
|
||||||
[
|
json.dumps([
|
||||||
{'text': 'Hey, this is just a test', 'start': 0.0, 'duration': 1.54},
|
{'text': 'Hey, this is just a test', 'start': 0.0, 'duration': 1.54},
|
||||||
{'text': 'this is not the original transcript', 'start': 1.54, 'duration': 4.16},
|
{'text': 'this is not the original transcript', 'start': 1.54, 'duration': 4.16},
|
||||||
{'text': 'just something shorter, I made up for testing', 'start': 5.7, 'duration': 3.239}
|
{'text': 'just something shorter, I made up for testing', 'start': 5.7, 'duration': 3.239}
|
||||||
]
|
])
|
||||||
)
|
)
|
||||||
|
|
||||||
def test_list_transcripts(self):
|
def test_list_transcripts(self):
|
||||||
|
@ -158,15 +161,15 @@ class TestYouTubeTranscriptApi(TestCase):
|
||||||
def test_get_transcript__with_proxy(self):
|
def test_get_transcript__with_proxy(self):
|
||||||
proxies = {'http': '', 'https:': ''}
|
proxies = {'http': '', 'https:': ''}
|
||||||
transcript = YouTubeTranscriptApi.get_transcript(
|
transcript = YouTubeTranscriptApi.get_transcript(
|
||||||
'GJLlxj_dtq8', proxies=proxies
|
'GJLlxj_dtq8', proxies=proxies, format=None
|
||||||
)
|
)
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
transcript,
|
transcript,
|
||||||
[
|
json.dumps([
|
||||||
{'text': 'Hey, this is just a test', 'start': 0.0, 'duration': 1.54},
|
{'text': 'Hey, this is just a test', 'start': 0.0, 'duration': 1.54},
|
||||||
{'text': 'this is not the original transcript', 'start': 1.54, 'duration': 4.16},
|
{'text': 'this is not the original transcript', 'start': 1.54, 'duration': 4.16},
|
||||||
{'text': 'just something shorter, I made up for testing', 'start': 5.7, 'duration': 3.239}
|
{'text': 'just something shorter, I made up for testing', 'start': 5.7, 'duration': 3.239}
|
||||||
]
|
])
|
||||||
)
|
)
|
||||||
|
|
||||||
def test_get_transcript__with_cookies(self):
|
def test_get_transcript__with_cookies(self):
|
||||||
|
@ -176,11 +179,11 @@ class TestYouTubeTranscriptApi(TestCase):
|
||||||
|
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
transcript,
|
transcript,
|
||||||
[
|
json.dumps([
|
||||||
{'text': 'Hey, this is just a test', 'start': 0.0, 'duration': 1.54},
|
{'text': 'Hey, this is just a test', 'start': 0.0, 'duration': 1.54},
|
||||||
{'text': 'this is not the original transcript', 'start': 1.54, 'duration': 4.16},
|
{'text': 'this is not the original transcript', 'start': 1.54, 'duration': 4.16},
|
||||||
{'text': 'just something shorter, I made up for testing', 'start': 5.7, 'duration': 3.239}
|
{'text': 'just something shorter, I made up for testing', 'start': 5.7, 'duration': 3.239}
|
||||||
]
|
])
|
||||||
)
|
)
|
||||||
|
|
||||||
@patch('youtube_transcript_api.YouTubeTranscriptApi.get_transcript')
|
@patch('youtube_transcript_api.YouTubeTranscriptApi.get_transcript')
|
||||||
|
@ -191,8 +194,8 @@ class TestYouTubeTranscriptApi(TestCase):
|
||||||
|
|
||||||
YouTubeTranscriptApi.get_transcripts([video_id_1, video_id_2], languages=languages)
|
YouTubeTranscriptApi.get_transcripts([video_id_1, video_id_2], languages=languages)
|
||||||
|
|
||||||
mock_get_transcript.assert_any_call(video_id_1, languages, None, None)
|
mock_get_transcript.assert_any_call(video_id_1, languages, None, None, format=None)
|
||||||
mock_get_transcript.assert_any_call(video_id_2, languages, None, None)
|
mock_get_transcript.assert_any_call(video_id_2, languages, None, None, format=None)
|
||||||
self.assertEqual(mock_get_transcript.call_count, 2)
|
self.assertEqual(mock_get_transcript.call_count, 2)
|
||||||
|
|
||||||
@patch('youtube_transcript_api.YouTubeTranscriptApi.get_transcript', side_effect=Exception('Error'))
|
@patch('youtube_transcript_api.YouTubeTranscriptApi.get_transcript', side_effect=Exception('Error'))
|
||||||
|
@ -207,20 +210,20 @@ class TestYouTubeTranscriptApi(TestCase):
|
||||||
|
|
||||||
YouTubeTranscriptApi.get_transcripts(['video_id_1', 'video_id_2'], continue_after_error=True)
|
YouTubeTranscriptApi.get_transcripts(['video_id_1', 'video_id_2'], continue_after_error=True)
|
||||||
|
|
||||||
mock_get_transcript.assert_any_call(video_id_1, ('en',), None, None)
|
mock_get_transcript.assert_any_call(video_id_1, ('en',), None, None, format=None)
|
||||||
mock_get_transcript.assert_any_call(video_id_2, ('en',), None, None)
|
mock_get_transcript.assert_any_call(video_id_2, ('en',), None, None, format=None)
|
||||||
|
|
||||||
@patch('youtube_transcript_api.YouTubeTranscriptApi.get_transcript')
|
@patch('youtube_transcript_api.YouTubeTranscriptApi.get_transcript')
|
||||||
def test_get_transcripts__with_cookies(self, mock_get_transcript):
|
def test_get_transcripts__with_cookies(self, mock_get_transcript):
|
||||||
cookies = '/example_cookies.txt'
|
cookies = '/example_cookies.txt'
|
||||||
YouTubeTranscriptApi.get_transcripts(['GJLlxj_dtq8'], cookies=cookies)
|
YouTubeTranscriptApi.get_transcripts(['GJLlxj_dtq8'], cookies=cookies)
|
||||||
mock_get_transcript.assert_any_call('GJLlxj_dtq8', ('en',), None, cookies)
|
mock_get_transcript.assert_any_call('GJLlxj_dtq8', ('en',), None, cookies, format=None)
|
||||||
|
|
||||||
@patch('youtube_transcript_api.YouTubeTranscriptApi.get_transcript')
|
@patch('youtube_transcript_api.YouTubeTranscriptApi.get_transcript')
|
||||||
def test_get_transcripts__with_proxies(self, mock_get_transcript):
|
def test_get_transcripts__with_proxies(self, mock_get_transcript):
|
||||||
proxies = {'http': '', 'https:': ''}
|
proxies = {'http': '', 'https:': ''}
|
||||||
YouTubeTranscriptApi.get_transcripts(['GJLlxj_dtq8'], proxies=proxies)
|
YouTubeTranscriptApi.get_transcripts(['GJLlxj_dtq8'], proxies=proxies)
|
||||||
mock_get_transcript.assert_any_call('GJLlxj_dtq8', ('en',), proxies, None)
|
mock_get_transcript.assert_any_call('GJLlxj_dtq8', ('en',), proxies, None, format=None)
|
||||||
|
|
||||||
def test_load_cookies(self):
|
def test_load_cookies(self):
|
||||||
dirname, filename = os.path.split(os.path.abspath(__file__))
|
dirname, filename = os.path.split(os.path.abspath(__file__))
|
||||||
|
|
Loading…
Reference in New Issue