I've got an application which uses files of configurations for example and If I run the application all these files are found and there is no problem, but If I do it from my tests I've got this error:
Error
Traceback (most recent call last):
File "/usr/lib/python3.6/unittest/case.py", line 59, in testPartExecutor
yield
File "/usr/lib/python3.6/unittest/case.py", line 605, in run
testMethod()
File "/home/josecarlos/Workspace/python/reports/test/data_test.py", line 50, in test_players_teams_ss
data = Data(params)
File "/home/josecarlos/Workspace/python/reports/com/data.py", line 10, in __init__
self.home_standard_stats = self.team_standard_stats(params["home"], params["league"])
File "/home/josecarlos/Workspace/python/reports/com/data.py", line 53, in team_standard_stats
id_season = self.get_id_season(id_league)
File "/home/josecarlos/Workspace/python/reports/com/data.py", line 27, in get_id_season
db = SearchData(args, "season=")
File "/home/josecarlos/Workspace/python/reports/ddbb/feb/data/search.py", line 18, in __init__
q = query.getQuery(query_name)
File "/home/josecarlos/Workspace/python/reports/com/files/queryreader.py", line 14, in getQuery
with open(self.getURL()) as file:
FileNotFoundError: [Errno 2] No such file or directory: './files/querys.sql'
This is my test file, data_test.py
import unittest
from com.data import Data
from constants import COMPETITIONS
import os
class TestDataMethods(unittest.TestCase):
def test_season(self):
#os.chdir("../") #We need to do this to go to the main directory of the app. If we don't do this, the code will run over ./test
params = {"report" : 1, "league" : COMPETITIONS.LF1, "home": 771, "away": 775}
season = Data.get_id_season(params["league"])
def test_team_standard_stats(self):
#os.chdir("../")
params = {"report" : 1, "league" : COMPETITIONS.LF1, "home": 771, "away": 775}
data = Data(params)
home_tss = data.home_standard_stats
self.assertEqual(home_tss.get_result().getTotalRows(), 1, "Error al devolver datos. No se devuelve 1 única fila de datos")
self.assertEqual(int(home_tss.get_result().getData()[0]["t2p_int"]), 952, "Error al devolver el número de t2p_int")
self.assertEqual(float(home_tss.get_result().getData()[0]["t2p_percentage"]), 43.38, "Error al devolver el número de t2p_percentage")
self.assertEqual(float(home_tss.get_result().getData()[0]["ppa"]), 0.84, "Error al devolver los puntos por intento del equipo")
params = {"report" : 1, "league" : COMPETITIONS.EUROLEAGUE, "home": 79, "away": 93}
data = Data(params)
home_tss = data.home_standard_stats
self.assertEqual(home_tss.get_result().getTotalRows(), 1, "Error al devolver datos. No se devuelve 1 única fila de datos")
self.assertEqual(int(home_tss.get_result().getData()[0]["t2p_int"]), 848, "Error al devolver el número de t2p_int")
self.assertEqual(float(home_tss.get_result().getData()[0]["t2p_percentage"]), 49.53, "Error al devolver el número de t2p_percentage")
self.assertEqual(float(home_tss.get_result().getData()[0]["ppa"]), 0.92, "Error al devolver los puntos por intento del equipo")
def test_team_advanced_stats(self):
#os.chdir("../")
params = {"report": 1, "league": COMPETITIONS.LF1, "home": 770, "away": 769}
data = Data(params)
home_tas = data.home_advanced_stats
self.assertEqual(home_tas.get_result().getTotalRows(), 1, "Local:: Error al devolver datos. No se devuelve 1 única fila de datos")
self.assertEqual(float(home_tas.get_result().getData()[0]["ortg"]), 109.08, "Local:: Error al devolver el ORTG")
params = {"report": 1, "league": COMPETITIONS.LF1, "home": 770, "away": 769}
data = Data(params)
away_tas = data.away_advanced_stats
self.assertEqual(away_tas.get_result().getTotalRows(), 1, "Visitante:: Error al devolver datos. No se devuelve 1 única fila de datos")
self.assertEqual(float(away_tas.get_result().getData()[0]["drtg"]), 81.96, "Visitante: Error al deveolver el DRTG")
params = {"report": 1, "league": COMPETITIONS.EUROLEAGUE, "home": 79, "away": 93}
data = Data(params)
away_tas = data.away_advanced_stats
self.assertEqual(away_tas.get_result().getTotalRows(), 1, "Visitante:: Error al devolver datos. No se devuelve 1 única fila de datos")
self.assertEqual(float(away_tas.get_result().getData()[0]["drtg"]), 106.25, "Visitante: Error al deveolver el DRTG")
def test_players_teams_ss(self):
#os.chdir("../")
params = {"report" : 1, "league" : COMPETITIONS.LF1, "home": 770, "away": 769}
data = Data(params)
home_pt_ss = data.players_team_ss(params["home"], params["league"])
self.assertEqual(home_pt_ss.get_result().getTotalRows(), 13, "Error: Número de registros recibido no es correcto")
self.assertEqual(home_pt_ss.get_result().getData()[8]["numero"], 44, "Error: El número de la jugadora no es correcto")
self.assertEqual(float(home_pt_ss.get_result().getData()[3]["t2p_percentage"]), 55.03, "Error: El porcentaje de acierto de T2P no es correcto")
params = {"report" : 1, "league" : COMPETITIONS.LF1, "home": 770, "away": 769}
data = Data(params)
away_pt_ss = data.players_team_ss(params["away"], params["league"])
self.assertEqual(away_pt_ss.get_result().getTotalRows(), 15, "Error: Número de registros recibido no es correcto")
self.assertEqual(away_pt_ss.get_result().getData()[8]["numero"], 3, "Error: El número de la jugadora no es correcto")
self.assertEqual(float(away_pt_ss.get_result().getData()[3]["t2p_percentage"]), 37.25, "Error: El porcentaje de acierto de T2P no es correcto")
def test_players_teams_as(self):
pass
if __name__== "__main__":
unittest.main()
And this is the file over we run the test, data.py
from ddbb.fiba.data.search import SearchDataFIBA
from ddbb.feb.data.search import SearchData
from constants import COMPETITIONS, SEASONS
class Data():
def __init__(self, params):
self.params = params
#Recuperar datos de estadísticas estandard del equipo local y visitante
self.home_standard_stats = self.team_standard_stats(params["home"], params["league"])
self.away_standard_stats = self.team_standard_stats(params["away"], params["league"])
#Recuperar datos de estadísticas avanzadas del equipo local y visitante
self.home_advanced_stats = self.team_advanced_stats(params["home"], params["league"])
self.away_advanced_stats = self.team_advanced_stats(params["away"], params["league"])
#Recuperar datos de estadísticas estandard y avanzadas del las jugadoras del equipo local y visitante
self.home_pt_ss = self.players_team_ss(params["home"], params["league"])
#self.away_pt_ss = self.players_team_ss(params["away"], params["league"])
#Recuperar datos de estadísticas estandard y avanzadas de las jugadoras del equipo local y visitante
self.home_pt_as = self.players_team_as(params["home"], params["league"])
self.away_pt_as = self.players_team_as(params["away"], params["league"])
@staticmethod
def get_id_season(league):
'''Returns id season of the current season for the league passed like parameter'''
if league == COMPETITIONS.LF1:
args = [1]
db = SearchData(args, "season=")
return db.get_result().getData()[0]["id"]
if league == COMPETITIONS.LF2:
args = [2]
db = SearchData(args, "season=")
return db.get_result().getData()[0]["id"]
if league == COMPETITIONS.EUROLEAGUE:
args = [1]
db = SearchDataFIBA(args, "season=")
return db.get_result().getData()[0]["id"]
if league == COMPETITIONS.EUROCUP:
args = [2]
db = SearchDataFIBA(args, "season=")
return db.get_result().getData()[0]["id"]
def team_advanced_stats(self, id_team, id_league):
'''Return the advanced stats from a team in a whole season'''
id_season = self.get_id_season(id_league)
args = [id_team, id_team, id_season, id_team, id_team]
if id_league == COMPETITIONS.LF1 or id_league == COMPETITIONS.LF2:
return SearchData(args, "team.adv.stats=")
if id_league == COMPETITIONS.EUROLEAGUE or id_league == COMPETITIONS.EUROLEAGUE:
return SearchDataFIBA(args, "team.adv.stats=")
def team_standard_stats(self, id_team, id_league):
'''Return the standard stats from a team in a whole season'''
id_season = self.get_id_season(id_league)
args = [id_team, id_season]
if id_league == COMPETITIONS.LF1 or id_league == COMPETITIONS.LF2:
return SearchData(args, "team.std.stats=")
if id_league == COMPETITIONS.EUROLEAGUE or id_league == COMPETITIONS.EUROCUP:
return SearchDataFIBA(args, "team.std.stats=")
@staticmethod
def players_team_ss(id_team, id_league):
'''Return standard stats of all the players of a team for a whole season'''
args = [id_team]
if id_league == COMPETITIONS.LF1 or id_league == COMPETITIONS.LF2:
return SearchData(args, "feb.players.std.stats=")
if id_league == COMPETITIONS.EUROLEAGUE or id_league == COMPETITIONS.EUROCUP:
return SearchDataFIBA(args, "fiba.players.std.stats=")
@staticmethod
def players_team_as(id_team, id_league):
'''Returns advanced stats of all the players of a team for a whole season'''
args = [id_team]
if id_league == COMPETITIONS.LF1 or id_league == COMPETITIONS.LF2:
return SearchData(args, "feb.players.adv.stats=")
if id_league == COMPETITIONS.EUROLEAGUE or id_league == COMPETITIONS.EUROCUP:
return SearchDataFIBA(args, "fiba.players.adv.stats=")
And this my structure of folders in the project:
What can I do to find the file?
Edit I
I have added this line to my code in test_sesion "os.chdir('../')"
The method right now is:
def test_season(self):
os.chdir("../") #We need to do this to go to the main directory of the app. If we don't do this, the code will run over ./test
params = {"report" : 1, "league" : COMPETITIONS.LF1, "home": 771, "away": 775}
season = Data.get_id_season(params["league"])
This method access to data base and to do this needs to access fhe file /files/querys.sql and the test works fine!!!
If I run the test but adding the method tests test_team_standard_stats and test_team_advanced_stats the code of the test file is:
import unittest
from com.data import Data
from constants import COMPETITIONS
import os
class TestDataMethods(unittest.TestCase):
def test_season(self):
os.chdir("../") #We need to do this to go to the main directory of the app. If we don't do this, the code will run over ./test
params = {"report" : 1, "league" : COMPETITIONS.LF1, "home": 771, "away": 775}
season = Data.get_id_season(params["league"])
def test_team_standard_stats(self):
#os.chdir("../")
params = {"report" : 1, "league" : COMPETITIONS.LF1, "home": 771, "away": 775}
data = Data(params)
home_tss = data.home_standard_stats
self.assertEqual(home_tss.get_result().getTotalRows(), 1, "Error al devolver datos. No se devuelve 1 única fila de datos")
self.assertEqual(int(home_tss.get_result().getData()[0]["t2p_int"]), 952, "Error al devolver el número de t2p_int")
self.assertEqual(float(home_tss.get_result().getData()[0]["t2p_percentage"]), 43.38, "Error al devolver el número de t2p_percentage")
self.assertEqual(float(home_tss.get_result().getData()[0]["ppa"]), 0.84, "Error al devolver los puntos por intento del equipo")
params = {"report" : 1, "league" : COMPETITIONS.EUROLEAGUE, "home": 79, "away": 93}
data = Data(params)
home_tss = data.home_standard_stats
self.assertEqual(home_tss.get_result().getTotalRows(), 1, "Error al devolver datos. No se devuelve 1 única fila de datos")
self.assertEqual(int(home_tss.get_result().getData()[0]["t2p_int"]), 848, "Error al devolver el número de t2p_int")
self.assertEqual(float(home_tss.get_result().getData()[0]["t2p_percentage"]), 49.53, "Error al devolver el número de t2p_percentage")
self.assertEqual(float(home_tss.get_result().getData()[0]["ppa"]), 0.92, "Error al devolver los puntos por intento del equipo")
def test_team_advanced_stats(self):
params = {"report": 1, "league": COMPETITIONS.LF1, "home": 770, "away": 769}
data = Data(params)
home_tas = data.home_advanced_stats
self.assertEqual(home_tas.get_result().getTotalRows(), 1, "Local:: Error al devolver datos. No se devuelve 1 única fila de datos")
self.assertEqual(float(home_tas.get_result().getData()[0]["ortg"]), 109.08, "Local:: Error al devolver el ORTG")
params = {"report": 1, "league": COMPETITIONS.LF1, "home": 770, "away": 769}
data = Data(params)
away_tas = data.away_advanced_stats
self.assertEqual(away_tas.get_result().getTotalRows(), 1, "Visitante:: Error al devolver datos. No se devuelve 1 única fila de datos")
self.assertEqual(float(away_tas.get_result().getData()[0]["drtg"]), 81.96, "Visitante: Error al deveolver el DRTG")
params = {"report": 1, "league": COMPETITIONS.EUROLEAGUE, "home": 79, "away": 93}
data = Data(params)
away_tas = data.away_advanced_stats
self.assertEqual(away_tas.get_result().getTotalRows(), 1, "Visitante:: Error al devolver datos. No se devuelve 1 única fila de datos")
self.assertEqual(float(away_tas.get_result().getData()[0]["drtg"]), 106.25, "Visitante: Error al deveolver el DRTG")
# def test_players_teams_ss(self):
# params = {"report" : 1, "league" : COMPETITIONS.LF1, "home": 770, "away": 769}
# data = Data(params)
# home_pt_ss = data.players_team_ss(params["home"], params["league"])
# self.assertEqual(home_pt_ss.get_result().getTotalRows(), 13, "Error: Número de registros recibido no es correcto")
# self.assertEqual(home_pt_ss.get_result().getData()[8]["numero"], 44, "Error: El número de la jugadora no es correcto")
# self.assertEqual(float(home_pt_ss.get_result().getData()[3]["t2p_percentage"]), 55.03, "Error: El porcentaje de acierto de T2P no es correcto")
# params = {"report" : 1, "league" : COMPETITIONS.LF1, "home": 770, "away": 769}
# data = Data(params)
# away_pt_ss = data.players_team_ss(params["away"], params["league"])
# self.assertEqual(away_pt_ss.get_result().getTotalRows(), 15, "Error: Número de registros recibido no es correcto")
# self.assertEqual(away_pt_ss.get_result().getData()[8]["numero"], 3, "Error: El número de la jugadora no es correcto")
# self.assertEqual(float(away_pt_ss.get_result().getData()[3]["t2p_percentage"]), 37.25, "Error: El porcentaje de acierto de T2P no es correcto")
#
# def test_players_teams_as(self):
# pass
if __name__== "__main__":
unittest.main()
¡¡¡The test works fine!!!
But if I add the method test_players_teams_ss to the test then this doesn't work :( I don't understand anything :(
Error
Traceback (most recent call last):
File "/usr/lib/python3.6/unittest/case.py", line 59, in testPartExecutor
yield
File "/usr/lib/python3.6/unittest/case.py", line 605, in run
testMethod()
File "/home/josecarlos/Workspace/python/reports/test/data_test.py", line 10, in test_season
season = Data.get_id_season(params["league"])
File "/home/josecarlos/Workspace/python/reports/com/data.py", line 27, in get_id_season
db = SearchData(args, "season=")
File "/home/josecarlos/Workspace/python/reports/ddbb/feb/data/search.py", line 18, in __init__
q = query.getQuery(query_name)
File "/home/josecarlos/Workspace/python/reports/com/files/queryreader.py", line 14, in getQuery
with open(self.getURL()) as file:
FileNotFoundError: [Errno 2] No such file or directory: './files/querys.sql'
How it does possible?
Edit II:
I have made more tests over my test file and I don't understand anything. I have commented all the code except the code of the method test test_players_teams_ss I remember that this test didn't work before. Ok, I have added this line to the method os.chdir('../')
The code of the method is:
def test_players_teams_ss(self):
os.chdir("../")
params = {"report" : 1, "league" : COMPETITIONS.LF1, "home": 770, "away": 769}
data = Data(params)
home_pt_ss = data.players_team_ss(params["home"], params["league"])
self.assertEqual(home_pt_ss.get_result().getTotalRows(), 13, "Error: Número de registros recibido no es correcto")
self.assertEqual(home_pt_ss.get_result().getData()[8]["numero"], 44, "Error: El número de la jugadora no es correcto")
self.assertEqual(float(home_pt_ss.get_result().getData()[3]["t2p_percentage"]), 55.03, "Error: El porcentaje de acierto de T2P no es correcto")
params = {"report" : 1, "league" : COMPETITIONS.LF1, "home": 770, "away": 769}
data = Data(params)
away_pt_ss = data.players_team_ss(params["away"], params["league"])
self.assertEqual(away_pt_ss.get_result().getTotalRows(), 15, "Error: Número de registros recibido no es correcto")
self.assertEqual(away_pt_ss.get_result().getData()[8]["numero"], 3, "Error: El número de la jugadora no es correcto")
self.assertEqual(float(away_pt_ss.get_result().getData()[3]["t2p_percentage"]), 37.25, "Error: El porcentaje de acierto de T2P no es correcto")
If I run the test with this only method the test ... works fine!!!
Then, If I uncomment the rest of the code of the other methods and run the test this ... doesn't work!!!
Error
Traceback (most recent call last):
File "/usr/lib/python3.6/unittest/case.py", line 59, in testPartExecutor
yield
File "/usr/lib/python3.6/unittest/case.py", line 605, in run
testMethod()
File "/home/josecarlos/Workspace/python/reports/test/data_test.py", line 10, in test_season
season = Data.get_id_season(params["league"])
File "/home/josecarlos/Workspace/python/reports/com/data.py", line 27, in get_id_season
db = SearchData(args, "season=")
File "/home/josecarlos/Workspace/python/reports/ddbb/feb/data/search.py", line 18, in __init__
q = query.getQuery(query_name)
File "/home/josecarlos/Workspace/python/reports/com/files/queryreader.py", line 14, in getQuery
with open(self.getURL()) as file:
FileNotFoundError: [Errno 2] No such file or directory: './files/querys.sql'
Error
Traceback (most recent call last):
File "/usr/lib/python3.6/unittest/case.py", line 59, in testPartExecutor
yield
File "/usr/lib/python3.6/unittest/case.py", line 605, in run
testMethod()
File "/home/josecarlos/Workspace/python/reports/test/data_test.py", line 32, in test_team_advanced_stats
data = Data(params)
File "/home/josecarlos/Workspace/python/reports/com/data.py", line 10, in __init__
self.home_standard_stats = self.team_standard_stats(params["home"], params["league"])
File "/home/josecarlos/Workspace/python/reports/com/data.py", line 53, in team_standard_stats
id_season = self.get_id_season(id_league)
File "/home/josecarlos/Workspace/python/reports/com/data.py", line 27, in get_id_season
db = SearchData(args, "season=")
File "/home/josecarlos/Workspace/python/reports/ddbb/feb/data/search.py", line 18, in __init__
q = query.getQuery(query_name)
File "/home/josecarlos/Workspace/python/reports/com/files/queryreader.py", line 14, in getQuery
with open(self.getURL()) as file:
FileNotFoundError: [Errno 2] No such file or directory: './files/querys.sql'
Error
Traceback (most recent call last):
File "/usr/lib/python3.6/unittest/case.py", line 59, in testPartExecutor
yield
File "/usr/lib/python3.6/unittest/case.py", line 605, in run
testMethod()
File "/home/josecarlos/Workspace/python/reports/test/data_test.py", line 15, in test_team_standard_stats
data = Data(params)
File "/home/josecarlos/Workspace/python/reports/com/data.py", line 10, in __init__
self.home_standard_stats = self.team_standard_stats(params["home"], params["league"])
File "/home/josecarlos/Workspace/python/reports/com/data.py", line 53, in team_standard_stats
id_season = self.get_id_season(id_league)
File "/home/josecarlos/Workspace/python/reports/com/data.py", line 27, in get_id_season
db = SearchData(args, "season=")
File "/home/josecarlos/Workspace/python/reports/ddbb/feb/data/search.py", line 18, in __init__
q = query.getQuery(query_name)
File "/home/josecarlos/Workspace/python/reports/com/files/queryreader.py", line 14, in getQuery
with open(self.getURL()) as file:
FileNotFoundError: [Errno 2] No such file or directory: './files/querys.sql'
Really, I don't understand anything, it's a madness!!!