Fixed testing with mock, added testing for cookies
This commit is contained in:
		
							parent
							
								
									42d4f59e01
								
							
						
					
					
						commit
						49ccba7f95
					
				|  | @ -0,0 +1,9 @@ | ||||||
|  | # HTTP Cookie File downloaded with cookies.txt by Genuinous @genuinous | ||||||
|  | # This file can be used by wget, curl, aria2c and other standard compliant tools. | ||||||
|  | # Usage Examples: | ||||||
|  | #   1) wget -x --load-cookies cookies.txt "https://www.youtube.com/" | ||||||
|  | #   2) curl --cookie cookies.txt "https://www.youtube.com/" | ||||||
|  | #   3) aria2c --load-cookies cookies.txt "https://www.youtube.com/" | ||||||
|  | # | ||||||
|  | .example.com	TRUE	/	TRUE	3594431874	TEST_FIELD	TEST_VALUE | ||||||
|  | .example.com	TRUE	/	TRUE	31874	BAD_TEST_FIELD	BAD_TEST_VALUE | ||||||
|  | @ -0,0 +1,8 @@ | ||||||
|  | # HTTP Cookie File downloaded with cookies.txt by Genuinous @genuinous | ||||||
|  | # This file can be used by wget, curl, aria2c and other standard compliant tools. | ||||||
|  | # Usage Examples: | ||||||
|  | #   1) wget -x --load-cookies cookies.txt "https://www.youtube.com/" | ||||||
|  | #   2) curl --cookie cookies.txt "https://www.youtube.com/" | ||||||
|  | #   3) aria2c --load-cookies cookies.txt "https://www.youtube.com/" | ||||||
|  | # | ||||||
|  | .example.com	TRUE	/	TRUE	31874	BAD_TEST_FIELD	BAD_TEST_VALUE | ||||||
|  | @ -1,8 +1,10 @@ | ||||||
| from unittest import TestCase | from unittest import TestCase | ||||||
| from mock import MagicMock | from mock import patch | ||||||
| 
 | 
 | ||||||
| import os | import os | ||||||
| 
 | 
 | ||||||
|  | import requests | ||||||
|  | 
 | ||||||
| import httpretty | import httpretty | ||||||
| 
 | 
 | ||||||
| from youtube_transcript_api import ( | from youtube_transcript_api import ( | ||||||
|  | @ -151,44 +153,7 @@ class TestYouTubeTranscriptApi(TestCase): | ||||||
|         with self.assertRaises(NoTranscriptAvailable): |         with self.assertRaises(NoTranscriptAvailable): | ||||||
|             YouTubeTranscriptApi.get_transcript('MwBPvcYFY2E') |             YouTubeTranscriptApi.get_transcript('MwBPvcYFY2E') | ||||||
| 
 | 
 | ||||||
|     def test_get_transcripts(self): |     def test_get_transcript__with_proxy(self): | ||||||
|         video_id_1 = 'video_id_1' |  | ||||||
|         video_id_2 = 'video_id_2' |  | ||||||
|         languages = ['de', 'en'] |  | ||||||
|         YouTubeTranscriptApi.get_transcript = MagicMock() |  | ||||||
| 
 |  | ||||||
|         YouTubeTranscriptApi.get_transcripts([video_id_1, video_id_2], languages=languages) |  | ||||||
| 
 |  | ||||||
|         YouTubeTranscriptApi.get_transcript.assert_any_call(video_id_1, languages, None, None) |  | ||||||
|         YouTubeTranscriptApi.get_transcript.assert_any_call(video_id_2, languages, None, None) |  | ||||||
|         self.assertEqual(YouTubeTranscriptApi.get_transcript.call_count, 2) |  | ||||||
| 
 |  | ||||||
|     def test_get_transcripts__stop_on_error(self): |  | ||||||
|         YouTubeTranscriptApi.get_transcript = MagicMock(side_effect=Exception('Error')) |  | ||||||
| 
 |  | ||||||
|         with self.assertRaises(Exception): |  | ||||||
|             YouTubeTranscriptApi.get_transcripts(['video_id_1', 'video_id_2']) |  | ||||||
| 
 |  | ||||||
|     def test_get_transcripts__continue_on_error(self): |  | ||||||
|         video_id_1 = 'video_id_1' |  | ||||||
|         video_id_2 = 'video_id_2' |  | ||||||
|         YouTubeTranscriptApi.get_transcript = MagicMock(side_effect=Exception('Error')) |  | ||||||
| 
 |  | ||||||
|         YouTubeTranscriptApi.get_transcripts(['video_id_1', 'video_id_2'], continue_after_error=True) |  | ||||||
| 
 |  | ||||||
|         YouTubeTranscriptApi.get_transcript.assert_any_call(video_id_1, ('en',), None, None) |  | ||||||
|         YouTubeTranscriptApi.get_transcript.assert_any_call(video_id_2, ('en',), None, None) |  | ||||||
|     |  | ||||||
|     def test_get_transcripts__check_cookies(self): |  | ||||||
|         cookies='example_cookies.txt' |  | ||||||
|         YouTubeTranscriptApi.get_transcript = MagicMock() |  | ||||||
|         YouTubeTranscriptApi.get_transcripts(['GJLlxj_dtq8'], cookies=cookies) |  | ||||||
|         YouTubeTranscriptApi.get_transcript.assert_any_call('GJLlxj_dtq8', ('en',), None, cookies) |  | ||||||
|          |  | ||||||
|         session_cookies = YouTubeTranscriptApi.load_cookies(cookies) |  | ||||||
|         print("here: ", session_cookies.items()) |  | ||||||
| 
 |  | ||||||
|     def test_get_transcript__with_proxies(self): |  | ||||||
|         proxies = {'http': '', 'https:': ''} |         proxies = {'http': '', 'https:': ''} | ||||||
|         transcript = YouTubeTranscriptApi.get_transcript( |         transcript = YouTubeTranscriptApi.get_transcript( | ||||||
|             'GJLlxj_dtq8', proxies=proxies |             'GJLlxj_dtq8', proxies=proxies | ||||||
|  | @ -201,6 +166,58 @@ class TestYouTubeTranscriptApi(TestCase): | ||||||
|                 {'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} | ||||||
|             ] |             ] | ||||||
|         ) |         ) | ||||||
|         YouTubeTranscriptApi.get_transcript = MagicMock() | 
 | ||||||
|  |     @patch('youtube_transcript_api.YouTubeTranscriptApi.get_transcript') | ||||||
|  |     def test_get_transcripts(self, mock_get_transcript): | ||||||
|  |         video_id_1 = 'video_id_1' | ||||||
|  |         video_id_2 = 'video_id_2' | ||||||
|  |         languages = ['de', 'en'] | ||||||
|  | 
 | ||||||
|  |         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_2, languages, None, None) | ||||||
|  |         self.assertEqual(mock_get_transcript.call_count, 2) | ||||||
|  | 
 | ||||||
|  |     @patch('youtube_transcript_api.YouTubeTranscriptApi.get_transcript', side_effect=Exception('Error')) | ||||||
|  |     def test_get_transcripts__stop_on_error(self, mock_get_transcript): | ||||||
|  |         with self.assertRaises(Exception): | ||||||
|  |             YouTubeTranscriptApi.get_transcripts(['video_id_1', 'video_id_2']) | ||||||
|  | 
 | ||||||
|  |     @patch('youtube_transcript_api.YouTubeTranscriptApi.get_transcript', side_effect=Exception('Error')) | ||||||
|  |     def test_get_transcripts__continue_on_error(self, mock_get_transcript): | ||||||
|  |         video_id_1 = 'video_id_1' | ||||||
|  |         video_id_2 = 'video_id_2' | ||||||
|  | 
 | ||||||
|  |         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_2, ('en',), None, None) | ||||||
|  |      | ||||||
|  |     @patch('youtube_transcript_api.YouTubeTranscriptApi.get_transcript') | ||||||
|  |     def test_get_transcripts__with_cookies(self, mock_get_transcript): | ||||||
|  |         cookies = '/example_cookies.txt' | ||||||
|  |         YouTubeTranscriptApi.get_transcripts(['GJLlxj_dtq8'], cookies=cookies) | ||||||
|  |         mock_get_transcript.assert_any_call('GJLlxj_dtq8', ('en',), None, cookies) | ||||||
|  | 
 | ||||||
|  |     @patch('youtube_transcript_api.YouTubeTranscriptApi.get_transcript') | ||||||
|  |     def test_get_transcripts__with_proxies(self, mock_get_transcript): | ||||||
|  |         proxies = {'http': '', 'https:': ''} | ||||||
|         YouTubeTranscriptApi.get_transcripts(['GJLlxj_dtq8'], proxies=proxies) |         YouTubeTranscriptApi.get_transcripts(['GJLlxj_dtq8'], proxies=proxies) | ||||||
|         YouTubeTranscriptApi.get_transcript.assert_any_call('GJLlxj_dtq8', ('en',), proxies, None) |         mock_get_transcript.assert_any_call('GJLlxj_dtq8', ('en',), proxies, None) | ||||||
|  | 
 | ||||||
|  |     def test_load_cookies(self): | ||||||
|  |         dirname, filename = os.path.split(os.path.abspath(__file__)) | ||||||
|  |         cookies = dirname + '/example_cookies.txt' | ||||||
|  |         session_cookies = YouTubeTranscriptApi.load_cookies(cookies) | ||||||
|  |         self.assertEqual({'TEST_FIELD': 'TEST_VALUE'},  requests.utils.dict_from_cookiejar(session_cookies)) | ||||||
|  | 
 | ||||||
|  |     def test_load_cookies__bad_files(self): | ||||||
|  |         bad_cookies = 'nonexistent_cookies.txt' | ||||||
|  |         with self.assertRaises(Exception): | ||||||
|  |             YouTubeTranscriptApi.load_cookies(bad_cookies) | ||||||
|  | 
 | ||||||
|  |         dirname, filename = os.path.split(os.path.abspath(__file__)) | ||||||
|  |         expired_cookies = dirname + '/expired_example_cookies.txt' | ||||||
|  |         with self.assertRaises(Exception): | ||||||
|  |             YouTubeTranscriptApi.load_cookies(expired_cookies) | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue