mirror of
https://github.com/instaloader/instaloader.git
synced 2024-08-18 12:49:38 +02:00
Add unit tests invoking all server requests
This commit is contained in:
parent
91976e595a
commit
d3bc7cb82b
@ -268,6 +268,8 @@ class Post:
|
|||||||
return self._owner_profile.username.lower()
|
return self._owner_profile.username.lower()
|
||||||
return self._field('owner', 'username').lower()
|
return self._field('owner', 'username').lower()
|
||||||
except (InstaloaderException, KeyError, TypeError) as err:
|
except (InstaloaderException, KeyError, TypeError) as err:
|
||||||
|
if self._instaloader.raise_all_errors:
|
||||||
|
raise err
|
||||||
self._instaloader.error("Get owner name of {}: {} -- using \'UNKNOWN\'.".format(self, err))
|
self._instaloader.error("Get owner name of {}: {} -- using \'UNKNOWN\'.".format(self, err))
|
||||||
return 'UNKNOWN'
|
return 'UNKNOWN'
|
||||||
|
|
||||||
@ -671,6 +673,9 @@ class Instaloader:
|
|||||||
# For the adaption of sleep intervals (rate control)
|
# For the adaption of sleep intervals (rate control)
|
||||||
self.previous_queries = dict()
|
self.previous_queries = dict()
|
||||||
|
|
||||||
|
# Can be set to True for testing, disables supression of Instaloader._error_catcher
|
||||||
|
self.raise_all_errors = False
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def is_logged_in(self) -> bool:
|
def is_logged_in(self) -> bool:
|
||||||
"""True, if this Instaloader instance is logged in."""
|
"""True, if this Instaloader instance is logged in."""
|
||||||
@ -717,6 +722,8 @@ class Instaloader:
|
|||||||
self.error('{}: {}'.format(extra_info, err))
|
self.error('{}: {}'.format(extra_info, err))
|
||||||
else:
|
else:
|
||||||
self.error('{}'.format(err))
|
self.error('{}'.format(err))
|
||||||
|
if self.raise_all_errors:
|
||||||
|
raise err
|
||||||
|
|
||||||
def _sleep(self):
|
def _sleep(self):
|
||||||
"""Sleep a short time if self.sleep is set. Called before each request to instagram.com."""
|
"""Sleep a short time if self.sleep is set. Called before each request to instagram.com."""
|
||||||
|
124
test/instaloader-unittests.py
Normal file
124
test/instaloader-unittests.py
Normal file
@ -0,0 +1,124 @@
|
|||||||
|
"""Unit Tests for Instaloader"""
|
||||||
|
|
||||||
|
import os
|
||||||
|
import shutil
|
||||||
|
import tempfile
|
||||||
|
import unittest
|
||||||
|
|
||||||
|
import instaloader
|
||||||
|
|
||||||
|
PUBLIC_PROFILE = "Thammus"
|
||||||
|
PUBLIC_PROFILE_ID = 1700252981
|
||||||
|
HASHTAG = "kitten"
|
||||||
|
OWN_USERNAME = "aandergr"
|
||||||
|
NORMAL_MAX_COUNT = 2
|
||||||
|
PAGING_MAX_COUNT = 15
|
||||||
|
PRIVATE_PROFILE = "aandergr"
|
||||||
|
|
||||||
|
|
||||||
|
class TestInstaloader(unittest.TestCase):
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
self.dir = tempfile.mkdtemp()
|
||||||
|
print("Testing in {}".format(self.dir))
|
||||||
|
os.chdir(self.dir)
|
||||||
|
self.L = instaloader.Instaloader(download_geotags=instaloader.Tristate.always,
|
||||||
|
download_comments=instaloader.Tristate.always,
|
||||||
|
save_metadata=instaloader.Tristate.always)
|
||||||
|
self.L.raise_all_errors = True
|
||||||
|
|
||||||
|
def tearDown(self):
|
||||||
|
self.L.session.close()
|
||||||
|
os.chdir('/')
|
||||||
|
print("Removing {}".format(self.dir))
|
||||||
|
shutil.rmtree(self.dir)
|
||||||
|
|
||||||
|
@unittest.SkipTest
|
||||||
|
def test_public_profile_download(self):
|
||||||
|
self.L.download_profile(PUBLIC_PROFILE, profile_pic=False, fast_update=True)
|
||||||
|
self.L.download_profile(PUBLIC_PROFILE, profile_pic=False, fast_update=True)
|
||||||
|
|
||||||
|
@unittest.SkipTest
|
||||||
|
def test_stories_download(self):
|
||||||
|
if not self.L.is_logged_in:
|
||||||
|
self.L.load_session_from_file(OWN_USERNAME)
|
||||||
|
self.L.download_stories()
|
||||||
|
|
||||||
|
@unittest.SkipTest
|
||||||
|
def test_private_profile_download(self):
|
||||||
|
if not self.L.is_logged_in:
|
||||||
|
self.L.load_session_from_file(OWN_USERNAME)
|
||||||
|
self.L.download_profile(PRIVATE_PROFILE, download_stories=True)
|
||||||
|
|
||||||
|
def test_profile_pic_download(self):
|
||||||
|
self.L.download_profile(PUBLIC_PROFILE, profile_pic_only=True)
|
||||||
|
|
||||||
|
def test_hashtag_download(self):
|
||||||
|
self.L.download_hashtag(HASHTAG, NORMAL_MAX_COUNT)
|
||||||
|
|
||||||
|
def test_feed_download(self):
|
||||||
|
if not self.L.is_logged_in:
|
||||||
|
self.L.load_session_from_file(OWN_USERNAME)
|
||||||
|
self.L.download_feed_posts(NORMAL_MAX_COUNT)
|
||||||
|
|
||||||
|
def test_feed_paging(self):
|
||||||
|
if not self.L.is_logged_in:
|
||||||
|
self.L.load_session_from_file(OWN_USERNAME)
|
||||||
|
for count, post in enumerate(self.L.get_feed_posts()):
|
||||||
|
print(post)
|
||||||
|
if count == PAGING_MAX_COUNT:
|
||||||
|
break
|
||||||
|
|
||||||
|
def test_saved_download(self):
|
||||||
|
if not self.L.is_logged_in:
|
||||||
|
self.L.load_session_from_file(OWN_USERNAME)
|
||||||
|
self.L.download_saved_posts(NORMAL_MAX_COUNT)
|
||||||
|
|
||||||
|
def test_saved_paging(self):
|
||||||
|
if not self.L.is_logged_in:
|
||||||
|
self.L.load_session_from_file(OWN_USERNAME)
|
||||||
|
for count, post in enumerate(instaloader.Profile(self.L, OWN_USERNAME).get_saved_posts()):
|
||||||
|
print(post)
|
||||||
|
if count == PAGING_MAX_COUNT:
|
||||||
|
break
|
||||||
|
|
||||||
|
def test_test_login(self):
|
||||||
|
if not self.L.is_logged_in:
|
||||||
|
self.L.load_session_from_file(OWN_USERNAME)
|
||||||
|
self.assertEqual(OWN_USERNAME, self.L.test_login())
|
||||||
|
|
||||||
|
def test_get_followees(self):
|
||||||
|
if not self.L.is_logged_in:
|
||||||
|
self.L.load_session_from_file(OWN_USERNAME)
|
||||||
|
for f in self.L.get_followees(OWN_USERNAME):
|
||||||
|
print(f['username'])
|
||||||
|
|
||||||
|
def test_get_followers(self):
|
||||||
|
if not self.L.is_logged_in:
|
||||||
|
self.L.load_session_from_file(OWN_USERNAME)
|
||||||
|
for f in self.L.get_followers(OWN_USERNAME):
|
||||||
|
print(f['username'])
|
||||||
|
|
||||||
|
def test_get_username_by_id(self):
|
||||||
|
self.assertEqual(PUBLIC_PROFILE.lower(), self.L.get_username_by_id(PUBLIC_PROFILE_ID))
|
||||||
|
|
||||||
|
def test_get_id_by_username(self):
|
||||||
|
self.assertEqual(PUBLIC_PROFILE_ID, self.L.get_id_by_username(PUBLIC_PROFILE))
|
||||||
|
|
||||||
|
def test_get_likes(self):
|
||||||
|
if not self.L.is_logged_in:
|
||||||
|
self.L.load_session_from_file(OWN_USERNAME)
|
||||||
|
for post in instaloader.Profile(self.L, OWN_USERNAME).get_posts():
|
||||||
|
for like in post.get_likes():
|
||||||
|
print(like['username'])
|
||||||
|
break
|
||||||
|
|
||||||
|
def test_post_from_mediaid(self):
|
||||||
|
for post in instaloader.Profile(self.L, PUBLIC_PROFILE).get_posts():
|
||||||
|
post2 = instaloader.Post.from_mediaid(self.L, post.mediaid)
|
||||||
|
self.assertEqual(post, post2)
|
||||||
|
break
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
unittest.main()
|
Loading…
Reference in New Issue
Block a user