зеркало из
				https://github.com/viginum-datalab/twscrape.git
				synced 2025-11-03 23:46:20 +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
 |