# -*- coding: utf-8 -*- import os from unittest import mock import pytest from pytube import request @mock.patch("pytube.request.urlopen") def test_streaming(mock_urlopen): fake_stream_binary = [ iter(os.urandom(8 * 1024)), iter(os.urandom(8 * 1024)), iter(os.urandom(8 * 1024)), None, ] response = mock.Mock() response.read.side_effect = fake_stream_binary mock_urlopen.return_value = response response = request.stream("http://fakeassurl.gov") call_count = len(list(response)) assert call_count == 3 @mock.patch("pytube.request.urlopen") def test_headers(mock_urlopen): response = mock.Mock() response.info.return_value = {"content-length": "16384"} mock_urlopen.return_value = response response = request.headers("http://fakeassurl.gov") assert response == {"content-length": "16384"} @mock.patch("pytube.request.urlopen") def test_get(mock_urlopen): response = mock.Mock() response.read.return_value = "".encode("utf-8") mock_urlopen.return_value = response response = request.get("http://fakeassurl.gov") assert response == "" def test_get_non_http(): with pytest.raises(ValueError): request.get("file://bad")