def test_listar_usuario(sessao): usuarios = [ Usuario(nome='Ernani', email='*****@*****.**'), Usuario(nome='Rose', email='*****@*****.**') ] for usuario in usuarios: sessao.salvar(usuario) assert usuarios == sessao.listar()
def get_usuario_segun_nombre_usuario(username) -> dict: usuario = {} access_token = get_access_token() # Más información sobre los datos recibidos en # https://developer.twitter.com/en/docs/twitter-api/users/lookup/api-reference/get-users-by-username-username respuesta = requests.get( '{}/2/users/by/username/{}?user.fields=created_at,description,entities,id,location,name,public_metrics,url,username' .format(os.getenv('API_TWITTER_URL'), username), headers={'Authorization': 'Bearer {}'.format(access_token)}) # Ejemplo del campo 'data' # { # 'id': '197103453', # 'username': '******', # 'name': 'Sergi del Moral', # 'public_metrics': { # 'followers_count': 6850, 'following_count': 1060, 'tweet_count': 17391, 'listed_count': 218 # } # } data = HttpResponse.get_campo_data(respuesta) usuario = Usuario(data['id'], data['username'], data['name'], data['public_metrics']['followers_count'], data['public_metrics']['following_count'], data['description'], data['url'], data['location']) return usuario.__dict__
def test_parametros_de_spam(sessao): usuario = Usuario(nome='Ernani', email='*****@*****.**') sessao.salvar(usuario) enviador = Mock() enviador_de_spam = EnviadorDeSpam(sessao, enviador) enviador_de_spam.enviar_emails('*****@*****.**', 'Teste envio de spam do PythonPro', 'Se recebeu, funciona!!') enviador.enviar.assert_called_once_with( '*****@*****.**', '*****@*****.**', 'Teste envio de spam do PythonPro', 'Se recebeu, funciona!!')
def get_perfiles_usuarios_segun_nombre_usuario(nombres_usuarios) -> list: if type(nombres_usuarios) != list or len(nombres_usuarios) == 0: raise ValueError( 'Argumento nombre_usuarios={} es incorrecto'.format( nombres_usuarios)) usuarios = [] access_token = get_access_token() # Si hay más de 100 usuarios, haremos grupos de 100 debido a que la API de Twitter # no premite ,ás de 100 usuarios por request. # Arrondeamos el número, eg: si 175/100=1.75, se convierte en 2 veces; si 65/100=0.65, se convierte en 1 vez. veces_numero_cien = math.ceil(len(nombres_usuarios) / 100) inici = 0 final = 100 for _ in range(veces_numero_cien): nombres_usuarios_agrupados = ','.join( nombres_usuarios[inici:final]) inici += 100 final += 100 # Más información sobre los datos recibidos en # https://developer.twitter.com/en/docs/twitter-api/users/lookup/api-reference/get-users-by-username-username respuesta = requests.get( '{}/2/users/by?usernames={}&user.fields=created_at,description,entities,id,location,name,public_metrics,url,username' .format(os.getenv('API_TWITTER_URL'), nombres_usuarios_agrupados), headers={'Authorization': 'Bearer {}'.format(access_token)}) # Ejemplo de los datos # [{ # 'id': '197103453', # 'username': '******', # 'name': 'Sergi del Moral', # 'public_metrics': { # 'followers_count': 6850, 'following_count': 1060, 'tweet_count': 17391, 'listed_count': 218 # } # }] data = HttpResponse.get_campo_data(respuesta) for usuario in data: usuario = Usuario(usuario['id'], usuario['username'], usuario['name'], usuario['public_metrics']['followers_count'], usuario['public_metrics']['following_count'], usuario['description'], usuario['url'], usuario['location']) usuarios.append(usuario.__dict__) return usuarios
def test_salvar_usuario(sessao): usuario = Usuario(nome='Ernani', email='*****@*****.**') sessao.salvar(usuario) assert isinstance(usuario.id, int)
from unittest import mock from unittest.mock import Mock import pytest from main import EnviadorDeSpam from modelos import Usuario from spam.enviador_de_email import Enviador @pytest.mark.parametrize("usuarios", [[ Usuario(nome='Ernani', email='*****@*****.**'), Usuario(nome='Rose', email='*****@*****.**') ], [Usuario(nome='Ernani', email='*****@*****.**')]]) def test_quantidade_de_spam(sessao, usuarios): for usuario in usuarios: sessao.salvar(usuario) enviador = Mock() enviador_de_spam = EnviadorDeSpam(sessao, enviador) enviador_de_spam.enviar_emails('*****@*****.**', 'Teste envio de spam do PythonPro', 'Se recebeu, funciona!!') assert len(usuarios) == enviador.enviar.call_count def test_parametros_de_spam(sessao): usuario = Usuario(nome='Ernani', email='*****@*****.**') sessao.salvar(usuario) enviador = Mock() enviador_de_spam = EnviadorDeSpam(sessao, enviador) enviador_de_spam.enviar_emails('*****@*****.**',