def __init__(self, params): ''' Constructor :param params: List of variables report: type of report team: id of the team, could be None when we ask for all the games of a gameday competition: value of the constant of the competition selected date: date of creation of the report ''' super().__init__(params) games = self.searchGames(params) for g in games: params.update(g) if params["report"] == 6 or params["report"] == 7: #pre-game self.data = DataPreGame(params) self.shots_home = TeamShots(params["home"], params["competition"]) self.shots_away = TeamShots(params["away"], params["competition"]) self.home_data = PreGame.get_name_team(params["home"], params["competition"]) self.away_data = PreGame.get_name_team(params["away"], params["competition"]) else: #post.game self.data = DataPostGame(params) self.shots_home = TeamShots(params["home"], params["competition"]) self.shots_away = TeamShots(params["away"], params["competition"]) self.home_data = PostGame.get_name_team( params["home"], params["competition"]) self.away_data = PostGame.get_name_team( params["away"], params["competition"]) self.build_pdf(params, self.data)
def test_players_team_as(self): params = { "report": 1, "competition": COMPETITIONS.LF1, "home": 770, "away": 769 } data = DataPreGame(params) players_home_as = data.players_home_as players_away_as = data.players_away_as self.assertEqual( len(players_home_as), 13, "Error: El total de elementos de la lista de jugadoras locales no es correcta" ) self.assertEqual( len(players_away_as), 15, "Error: El total de elementos de la lista de jugadoras visitantes no es correcta" ) self.assertEqual(Decimal(players_home_as[8]["etc"]), round(Decimal(60.24), 2), "Error: El eFG% de la jugadora no es correcta") self.assertEqual(Decimal(players_home_as[3]["usg"]), round(Decimal(27.19), 2), "Error: El USG% de la jugadora no es correcto") self.assertEqual(Decimal(players_away_as[8]["p_assists"]), round(Decimal(35.27), 2), "Error: El %Assists de la jugadora no es correcta") self.assertEqual(Decimal(players_away_as[3]["ortg"]), round(Decimal(95.32), 2), "Error: El ORTG de la jugadora no es correcto")
def test_team_advanced_stats(self): params = { "report": 1, "competition": COMPETITIONS.LF1, "home": 770, "away": 769 } data = DataPreGame(params) home_tas = data.home_advanced_stats self.assertEqual( len(home_tas), 1, "Local:: Error al devolver datos. No se devuelve 1 única fila de datos" ) self.assertEqual(Decimal(home_tas[0]["ortg"]), round(Decimal(109.32), 2), "Local:: Error al devolver el ORTG") params = { "report": 1, "competition": COMPETITIONS.LF1, "home": 770, "away": 769 } data = DataPreGame(params) away_tas = data.away_advanced_stats self.assertEqual( len(away_tas), 1, "Visitante:: Error al devolver datos. No se devuelve 1 única fila de datos" ) self.assertEqual(Decimal(away_tas[0]["drtg"]), round(Decimal(81.84), 2), "Visitante: Error al deveolver el DRTG") params = { "report": 1, "competition": COMPETITIONS.EUROLEAGUE, "home": 79, "away": 93 } data = DataPreGame(params) away_tas = data.away_advanced_stats self.assertEqual( len(away_tas), 1, "Visitante:: Error al devolver datos. No se devuelve 1 única fila de datos" ) self.assertEqual(Decimal(away_tas[0]["drtg"]), round(Decimal(106.45), 2), "Visitante: Error al deveolver el DRTG")
def test_players_teams_as(self): params = { "report": 1, "competition": COMPETITIONS.LF1, "home": 770, "away": 769 } data = DataPreGame(params) home_pt_as = data.players_team_as(params["home"], params["competition"]) self.assertEqual(len(home_pt_as), 13, "Error: Número de registros recibido no es correcto") self.assertEqual(Decimal(home_pt_as[8]["etc"]), round(Decimal(60.24), 2), "Error: El número de la jugadora no es correcto") self.assertEqual( Decimal(home_pt_as[3]["usg"]), round(Decimal(27.19), 2), "Error: El porcentaje de acierto de T2P no es correcto") params = { "report": 1, "competition": COMPETITIONS.EUROLEAGUE, "home": 79, "away": 93 } data = DataPreGame(params) away_pt_ss = data.players_team_as(params["away"], params["competition"]) self.assertEqual(len(away_pt_ss), 15, "Error: Número de registros recibido no es correcto") self.assertEqual(Decimal(away_pt_ss[8]["p_assists"]), round(Decimal(14.30), 2), "Error: El número de la jugadora no es correcto") self.assertEqual( Decimal(away_pt_ss[3]["ortg"]), round(Decimal(99.79), 2), "Error: El porcentaje de acierto de T2P no es correcto")
def test_players_teams_ss(self): params = { "report": 1, "competition": COMPETITIONS.LF1, "home": 770, "away": 769 } data = DataPreGame(params) home_pt_ss = data.players_team_ss(params["home"], params["competition"]) self.assertEqual(len(home_pt_ss), 13, "Error: Número de registros recibido no es correcto") self.assertEqual(home_pt_ss[8]["numero"], 44, "Error: El número de la jugadora no es correcto") self.assertEqual( Decimal(home_pt_ss[3]["t2p_percentage"]), round(Decimal(55.03), 2), "Error: El porcentaje de acierto de T2P no es correcto") params = { "report": 1, "competition": COMPETITIONS.LF1, "home": 770, "away": 769 } data = DataPreGame(params) away_pt_ss = data.players_team_ss(params["away"], params["competition"]) self.assertEqual(len(away_pt_ss), 15, "Error: Número de registros recibido no es correcto") self.assertEqual(away_pt_ss[8]["numero"], 3, "Error: El número de la jugadora no es correcto") self.assertEqual( Decimal(away_pt_ss[3]["t2p_percentage"]), round(Decimal(37.25), 2), "Error: El porcentaje de acierto de T2P no es correcto")
def test_set_ratio_ft(self): params = { "report": 1, "league": COMPETITIONS.LF1, "home": 770, "away": 769 } data = DataPreGame(params) tas = TeamAS(data.home_standard_stats.get_result().getData()[0], data.home_opps_standard_stats.get_result().getData()[0]) tas.set_ratio_ft() self.assertEqual(float(tas.get_ratio_ft()), 0.17, "Error: El valor del Ratio de TL. no es el correcto")
def test_set_percentage_turnovers(self): params = { "report": 1, "league": COMPETITIONS.LF1, "home": 770, "away": 769 } data = DataPreGame(params) tas = TeamAS(data.home_standard_stats.get_result().getData()[0], data.home_opps_standard_stats.get_result().getData()[0]) tas.set_percentage_turnovers() self.assertEqual(float(tas.get_percentage_turnovers()), 15.30, "Error: El valor del %TOV. no es el correcto")
def test_opp_team_standard_stats(self): params = { "report": 1, "competition": COMPETITIONS.LF1, "home": 770, "away": 769 } data = DataPreGame(params) home_opps_tss = data.home_opps_standard_stats self.assertEqual( len(home_opps_tss), 1, "Error al devolver datos. No se devuelve 1 única fila de datos") self.assertEqual(int(home_opps_tss[0]["t2p_int"]), 966, "Error al devolver el número de t2p_int") self.assertEqual(Decimal(home_opps_tss[0]["t2p_percentage"]), round(Decimal(39.54), 2), "Error al devolver el número de t2p_percentage") self.assertEqual( Decimal(home_opps_tss[0]["ppa"]), round(Decimal(0.81), 2), "Error al devolver los puntos por intento del equipo") params = { "report": 1, "competition": COMPETITIONS.EUROLEAGUE, "home": 79, "away": 93 } data = DataPreGame(params) away_opps_tss = data.away_opps_standard_stats self.assertEqual( len(away_opps_tss), 1, "Error al devolver datos. No se devuelve 1 única fila de datos") self.assertEqual(int(away_opps_tss[0]["t2p_int"]), 639, "Error al devolver el número de t2p_int") self.assertEqual(Decimal(away_opps_tss[0]["t2p_percentage"]), round(Decimal(48.20), 2), "Error al devolver el número de t2p_percentage") self.assertEqual( Decimal(away_opps_tss[0]["ppa"]), round(Decimal(0.96), 2), "Error al devolver los puntos por intento del equipo")
def test_set_ortg(self): params = { "report": 1, "league": COMPETITIONS.LF1, "home": 770, "away": 769 } data = DataPreGame(params) tas = TeamAS(data.home_standard_stats.get_result().getData()[0], data.home_opps_standard_stats.get_result().getData()[0]) tas.set_possessions() tas.set_ortg() self.assertEqual(float(tas.get_ortg()), 109.32, "Error: El valor del ORTG no es el correcto")
def test_set_ratio_steals_turnovers(self): params = { "report": 1, "league": COMPETITIONS.LF1, "home": 770, "away": 769 } data = DataPreGame(params) tas = TeamAS(data.home_standard_stats.get_result().getData()[0], data.home_opps_standard_stats.get_result().getData()[0]) tas.set_ratio_steals_turnovers() self.assertEqual( float(tas.get_ratio_steals_turnovers()), 0.90, "Error: El valor del ratio de asistencias por pérdida no es el correcto" )
def test_set_etc(self): os.chdir("../") params = { "report": 1, "league": COMPETITIONS.LF1, "home": 770, "away": 769 } data = DataPreGame(params) tas = TeamAS(data.home_standard_stats.get_result().getData()[0], data.home_opps_standard_stats.get_result().getData()[0]) tas.set_etc() self.assertEqual(tas.get_minutes(), 5200, "Error: El número de minutos no es el correcto") self.assertEqual(float(tas.get_etc()), 51.97, "Error: El valor de eTC% no es correcto")
def __init__(self, params): super().__init__(params) print("PreGame Report") self.data = DataPreGame(params) self.shots_home = TeamShots(params["home"], params["competition"]) self.shots_away = TeamShots(params["away"], params["competition"]) self.home_data = PreGame.get_name_team(params["home"], params["competition"]) self.away_data = PreGame.get_name_team(params["away"], params["competition"]) self.build_pdf(params, self.data) #Send PDF self.send_pdf() #Remove PDF print("PreGame:: Borramos PDF") #os.remove(self.pdf.fileName) print("PreGame:: ¡¡¡FIN DE PROCESO!!!")