swiftyy-mage
commited on
Tests
Browse files- tests/test_cli.py +63 -17
tests/test_cli.py
CHANGED
@@ -84,6 +84,12 @@ def test_download_caption_with_language_not_found(youtube):
|
|
84 |
wrapped_all.assert_called()
|
85 |
|
86 |
|
|
|
|
|
|
|
|
|
|
|
|
|
87 |
@mock.patch("pytube.Stream")
|
88 |
@mock.patch("io.BufferedWriter")
|
89 |
def test_on_progress(stream, writer):
|
@@ -101,8 +107,6 @@ def test_parse_args_falsey():
|
|
101 |
assert args.itag is None
|
102 |
assert args.list is False
|
103 |
assert args.verbosity == 0
|
104 |
-
assert args.resolution is None
|
105 |
-
assert args.ffmpeg is None
|
106 |
|
107 |
|
108 |
def test_parse_args_truthy():
|
@@ -116,21 +120,15 @@ def test_parse_args_truthy():
|
|
116 |
"en",
|
117 |
"-l",
|
118 |
"--itag=10",
|
119 |
-
"--resolution=720p",
|
120 |
-
"--audio=mp4",
|
121 |
-
"--ffmpeg=2160p",
|
122 |
],
|
123 |
)
|
124 |
assert args.url == "http://youtube.com/watch?v=9bZkp7q19f0"
|
125 |
assert args.build_playback_report is True
|
126 |
assert args.itag == 10
|
127 |
assert args.list is True
|
128 |
-
assert args.resolution == "720p"
|
129 |
-
assert args.audio == "mp4"
|
130 |
-
assert args.ffmpeg == "2160p"
|
131 |
|
132 |
|
133 |
-
@mock.patch("pytube.cli.YouTube
|
134 |
def test_main_download_by_itag(youtube):
|
135 |
parser = argparse.ArgumentParser()
|
136 |
args = parse_args(parser, ["http://youtube.com/watch?v=9bZkp7q19f0", "--itag=10"])
|
@@ -141,7 +139,7 @@ def test_main_download_by_itag(youtube):
|
|
141 |
cli.download_by_itag.assert_called()
|
142 |
|
143 |
|
144 |
-
@mock.patch("pytube.cli.YouTube
|
145 |
def test_main_build_playback_report(youtube):
|
146 |
parser = argparse.ArgumentParser()
|
147 |
args = parse_args(
|
@@ -154,7 +152,7 @@ def test_main_build_playback_report(youtube):
|
|
154 |
cli.build_playback_report.assert_called()
|
155 |
|
156 |
|
157 |
-
@mock.patch("pytube.cli.YouTube
|
158 |
def test_main_display_streams(youtube):
|
159 |
parser = argparse.ArgumentParser()
|
160 |
args = parse_args(parser, ["http://youtube.com/watch?v=9bZkp7q19f0", "-l"])
|
@@ -165,7 +163,7 @@ def test_main_display_streams(youtube):
|
|
165 |
cli.display_streams.assert_called()
|
166 |
|
167 |
|
168 |
-
@mock.patch("pytube.cli.YouTube
|
169 |
def test_main_download_caption(youtube):
|
170 |
parser = argparse.ArgumentParser()
|
171 |
args = parse_args(parser, ["http://youtube.com/watch?v=9bZkp7q19f0", "-c"])
|
@@ -176,15 +174,15 @@ def test_main_download_caption(youtube):
|
|
176 |
cli.download_caption.assert_called()
|
177 |
|
178 |
|
179 |
-
@mock.patch("pytube.cli.YouTube
|
180 |
-
|
|
|
181 |
parser = argparse.ArgumentParser()
|
182 |
args = parse_args(parser, ["http://youtube.com/watch?v=9bZkp7q19f0", "-r", "320p"])
|
183 |
cli._parse_args = MagicMock(return_value=args)
|
184 |
-
cli.download_by_resolution = MagicMock()
|
185 |
cli.main()
|
186 |
youtube.assert_called()
|
187 |
-
|
188 |
|
189 |
|
190 |
@mock.patch("pytube.cli.Playlist")
|
@@ -193,11 +191,48 @@ def test_download_with_playlist(playlist):
|
|
193 |
parser = argparse.ArgumentParser()
|
194 |
args = parse_args(parser, ["https://www.youtube.com/playlist?list=PLyn"])
|
195 |
cli._parse_args = MagicMock(return_value=args)
|
196 |
-
cli.download_by_resolution = MagicMock()
|
197 |
cli.main()
|
198 |
playlist.assert_called()
|
199 |
|
200 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
201 |
@mock.patch("pytube.cli.YouTube.__init__", return_value=None)
|
202 |
def test_download_audio(youtube):
|
203 |
parser = argparse.ArgumentParser()
|
@@ -218,3 +253,14 @@ def test_ffmpeg_process(youtube):
|
|
218 |
cli.main()
|
219 |
youtube.assert_called()
|
220 |
cli.ffmpeg_process.assert_called()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
84 |
wrapped_all.assert_called()
|
85 |
|
86 |
|
87 |
+
def test_display_progress_bar(capsys):
|
88 |
+
cli.display_progress_bar(bytes_received=25, filesize=100, scale=0.55)
|
89 |
+
out, _ = capsys.readouterr()
|
90 |
+
assert "25.0%" in out
|
91 |
+
|
92 |
+
|
93 |
@mock.patch("pytube.Stream")
|
94 |
@mock.patch("io.BufferedWriter")
|
95 |
def test_on_progress(stream, writer):
|
|
|
107 |
assert args.itag is None
|
108 |
assert args.list is False
|
109 |
assert args.verbosity == 0
|
|
|
|
|
110 |
|
111 |
|
112 |
def test_parse_args_truthy():
|
|
|
120 |
"en",
|
121 |
"-l",
|
122 |
"--itag=10",
|
|
|
|
|
|
|
123 |
],
|
124 |
)
|
125 |
assert args.url == "http://youtube.com/watch?v=9bZkp7q19f0"
|
126 |
assert args.build_playback_report is True
|
127 |
assert args.itag == 10
|
128 |
assert args.list is True
|
|
|
|
|
|
|
129 |
|
130 |
|
131 |
+
@mock.patch("pytube.cli.YouTube", return_value=None)
|
132 |
def test_main_download_by_itag(youtube):
|
133 |
parser = argparse.ArgumentParser()
|
134 |
args = parse_args(parser, ["http://youtube.com/watch?v=9bZkp7q19f0", "--itag=10"])
|
|
|
139 |
cli.download_by_itag.assert_called()
|
140 |
|
141 |
|
142 |
+
@mock.patch("pytube.cli.YouTube", return_value=None)
|
143 |
def test_main_build_playback_report(youtube):
|
144 |
parser = argparse.ArgumentParser()
|
145 |
args = parse_args(
|
|
|
152 |
cli.build_playback_report.assert_called()
|
153 |
|
154 |
|
155 |
+
@mock.patch("pytube.cli.YouTube", return_value=None)
|
156 |
def test_main_display_streams(youtube):
|
157 |
parser = argparse.ArgumentParser()
|
158 |
args = parse_args(parser, ["http://youtube.com/watch?v=9bZkp7q19f0", "-l"])
|
|
|
163 |
cli.display_streams.assert_called()
|
164 |
|
165 |
|
166 |
+
@mock.patch("pytube.cli.YouTube", return_value=None)
|
167 |
def test_main_download_caption(youtube):
|
168 |
parser = argparse.ArgumentParser()
|
169 |
args = parse_args(parser, ["http://youtube.com/watch?v=9bZkp7q19f0", "-c"])
|
|
|
174 |
cli.download_caption.assert_called()
|
175 |
|
176 |
|
177 |
+
@mock.patch("pytube.cli.YouTube", return_value=None)
|
178 |
+
@mock.patch("pytube.cli.download_by_resolution")
|
179 |
+
def test_download_by_resolution_flag(youtube, download_by_resolution):
|
180 |
parser = argparse.ArgumentParser()
|
181 |
args = parse_args(parser, ["http://youtube.com/watch?v=9bZkp7q19f0", "-r", "320p"])
|
182 |
cli._parse_args = MagicMock(return_value=args)
|
|
|
183 |
cli.main()
|
184 |
youtube.assert_called()
|
185 |
+
download_by_resolution.assert_called()
|
186 |
|
187 |
|
188 |
@mock.patch("pytube.cli.Playlist")
|
|
|
191 |
parser = argparse.ArgumentParser()
|
192 |
args = parse_args(parser, ["https://www.youtube.com/playlist?list=PLyn"])
|
193 |
cli._parse_args = MagicMock(return_value=args)
|
|
|
194 |
cli.main()
|
195 |
playlist.assert_called()
|
196 |
|
197 |
|
198 |
+
@mock.patch("pytube.cli.YouTube")
|
199 |
+
@mock.patch("pytube.StreamQuery")
|
200 |
+
@mock.patch("pytube.Stream")
|
201 |
+
def test_download_by_resolution(youtube, stream_query, stream):
|
202 |
+
stream_query.get_by_resolution.return_value = stream
|
203 |
+
youtube.streams = stream_query
|
204 |
+
cli._download = MagicMock()
|
205 |
+
cli.download_by_resolution(youtube=youtube, resolution="320p", target="test_target")
|
206 |
+
cli._download.assert_called_with(stream, target="test_target")
|
207 |
+
|
208 |
+
|
209 |
+
@mock.patch("pytube.cli.YouTube")
|
210 |
+
@mock.patch("pytube.StreamQuery")
|
211 |
+
def test_download_by_resolution_not_exists(youtube, stream_query):
|
212 |
+
stream_query.get_by_resolution.return_value = None
|
213 |
+
youtube.streams = stream_query
|
214 |
+
cli._download = MagicMock()
|
215 |
+
with pytest.raises(SystemExit):
|
216 |
+
cli.download_by_resolution(
|
217 |
+
youtube=youtube, resolution="DOESNT EXIST", target="test_target"
|
218 |
+
)
|
219 |
+
cli._download.assert_not_called()
|
220 |
+
|
221 |
+
|
222 |
+
@mock.patch("pytube.cli.YouTube")
|
223 |
+
@mock.patch("pytube.cli.Stream")
|
224 |
+
def test_ffmpeg_downloader(youtube, stream):
|
225 |
+
parser = argparse.ArgumentParser()
|
226 |
+
args = parse_args(parser, ["http://youtube.com/watch?v=9bZkp7q19f0", "-f", "best"])
|
227 |
+
cli._parse_args = MagicMock(return_value=args)
|
228 |
+
cli.safe_filename = MagicMock(return_value="PSY - GANGNAM STYLE(강남스타일) MV")
|
229 |
+
cli.subprocess.run = MagicMock()
|
230 |
+
cli.os.unlink = MagicMock()
|
231 |
+
cli.ffmpeg_downloader = MagicMock()
|
232 |
+
cli.main()
|
233 |
+
cli.ffmpeg_downloader.assert_called()
|
234 |
+
|
235 |
+
|
236 |
@mock.patch("pytube.cli.YouTube.__init__", return_value=None)
|
237 |
def test_download_audio(youtube):
|
238 |
parser = argparse.ArgumentParser()
|
|
|
253 |
cli.main()
|
254 |
youtube.assert_called()
|
255 |
cli.ffmpeg_process.assert_called()
|
256 |
+
|
257 |
+
|
258 |
+
@mock.patch("pytube.cli.YouTube.__init__", return_value=None)
|
259 |
+
def test_perform_args_on_youtube(youtube):
|
260 |
+
parser = argparse.ArgumentParser()
|
261 |
+
args = parse_args(parser, ["http://youtube.com/watch?v=9bZkp7q19f0"])
|
262 |
+
cli._parse_args = MagicMock(return_value=args)
|
263 |
+
cli._perform_args_on_youtube = MagicMock()
|
264 |
+
cli.main()
|
265 |
+
youtube.assert_called()
|
266 |
+
cli._perform_args_on_youtube.assert_called()
|