зеркало из
				https://github.com/viginum-datalab/twscrape.git
				synced 2025-10-30 21:46:13 +02:00 
			
		
		
		
	
		
			
				
	
	
		
			66 строки
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			66 строки
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| import os
 | |
| 
 | |
| import pytest
 | |
| 
 | |
| from twscrape.accounts_pool import NoAccountError
 | |
| from twscrape.api import API
 | |
| from twscrape.logger import set_log_level
 | |
| from twscrape.utils import gather, get_env_bool
 | |
| 
 | |
| set_log_level("DEBUG")
 | |
| 
 | |
| 
 | |
| class MockedError(Exception):
 | |
|     pass
 | |
| 
 | |
| 
 | |
| GQL_GEN = [
 | |
|     "search",
 | |
|     "tweet_replies",
 | |
|     "retweeters",
 | |
|     "favoriters",
 | |
|     "followers",
 | |
|     "following",
 | |
|     "user_tweets",
 | |
|     "user_tweets_and_replies",
 | |
|     "list_timeline",
 | |
|     "liked_tweets",
 | |
| ]
 | |
| 
 | |
| 
 | |
| async def test_gql_params(api_mock: API, monkeypatch):
 | |
|     for func in GQL_GEN:
 | |
|         args = []
 | |
| 
 | |
|         def mock_gql_items(*a, **kw):
 | |
|             args.append((a, kw))
 | |
|             raise MockedError()
 | |
| 
 | |
|         try:
 | |
|             monkeypatch.setattr(api_mock, "_gql_items", mock_gql_items)
 | |
|             await gather(getattr(api_mock, func)("user1", limit=100, kv={"count": 100}))
 | |
|         except MockedError:
 | |
|             pass
 | |
| 
 | |
|         assert len(args) == 1, f"{func} not called once"
 | |
|         assert args[0][1]["limit"] == 100, f"limit not changed in {func}"
 | |
|         assert args[0][0][1]["count"] == 100, f"count not changed in {func}"
 | |
| 
 | |
| 
 | |
| async def test_raise_when_no_account(api_mock: API):
 | |
|     await api_mock.pool.delete_accounts(["user1"])
 | |
|     assert len(await api_mock.pool.get_all()) == 0
 | |
| 
 | |
|     assert get_env_bool("TWS_RAISE_WHEN_NO_ACCOUNT") is False
 | |
|     os.environ["TWS_RAISE_WHEN_NO_ACCOUNT"] = "1"
 | |
|     assert get_env_bool("TWS_RAISE_WHEN_NO_ACCOUNT") is True
 | |
| 
 | |
|     with pytest.raises(NoAccountError):
 | |
|         await gather(api_mock.search("foo", limit=10))
 | |
| 
 | |
|     with pytest.raises(NoAccountError):
 | |
|         await api_mock.user_by_id(123)
 | |
| 
 | |
|     del os.environ["TWS_RAISE_WHEN_NO_ACCOUNT"]
 | |
|     assert get_env_bool("TWS_RAISE_WHEN_NO_ACCOUNT") is False
 | 
