sys.path.insert(0, os.path.join(os.path.dirname(__file__), ".."))
 
+TEST_DATA = Path(__file__).parent / "data"
+
 import main
 
 @pytest.fixture
     _create_user(client, "user", "password", login=True)
     response = client.post("/edit-profile", data={
         "bio": "",
-        "pfp": open("lsp_notes.png", "rb"),
+        "pfp": open(TEST_DATA/"lsp_notes.png", "rb"),
         "fgcolor": "#000000",
         "bgcolor": "#000000",
         "accolor": "#000000",
 def test_edit_profile_not_logged_in(client):
     response = client.post("/edit-profile", data={
         "bio": "",
-        "pfp": open("lsp_notes.png", "rb"),
+        "pfp": open(TEST_DATA/"lsp_notes.png", "rb"),
         "fgcolor": "#000000",
         "bgcolor": "#000000",
         "accolor": "#000000",
     _create_user(client, "user", "password", login=True)
     client.post("/edit-profile", data={
         "bio": "",
-        "pfp": open("lsp_notes.png", "rb"),
+        "pfp": open(TEST_DATA/"lsp_notes.png", "rb"),
         "fgcolor": "#000000",
         "bgcolor": "#000000",
         "accolor": "#000000",
 # Upload Song
 ################################################################################
 
-def _test_upload_song(client, msg, error=False, songid=None, user="user", userid=1, filename="sample-3s.mp3", **kwargs):
+def _test_upload_song(client, msg, error=False, songid=None, user="user", userid=1, filename=TEST_DATA/"sample-3s.mp3", **kwargs):
     song_file = open(filename, "rb")
 
     data = {
 
 def test_upload_song_from_mp4(client):
     _create_user(client, "user", "password", login=True)
-    _test_upload_song(client, b"Successfully uploaded 'song title'", filename="sample-4s.mp4")
+    _test_upload_song(client, b"Successfully uploaded 'song title'", filename=TEST_DATA/"sample-4s.mp4")
 
 @pytest.mark.skip
 def test_upload_song_from_youtube(client):
 
 def test_update_song_success(client):
     _create_user_and_song(client)
-    _test_upload_song(client, b"Successfully updated 'song title'", filename="sample-6s.mp3", songid=1)
+    _test_upload_song(client, b"Successfully updated 'song title'", filename=TEST_DATA/"sample-6s.mp3", songid=1)
     response = client.get("/song/1/1")
     assert response.status_code == 200
-    with open("sample-6s.mp3", "rb") as expected_file:
+    with open(TEST_DATA/"sample-6s.mp3", "rb") as expected_file:
         assert response.data == expected_file.read()
 
 @pytest.mark.skip
     _create_user_and_song(client)
 
     data = {
-        "song-file": open("sample-3s.mp3", "rb"),
+        "song-file": open(TEST_DATA/"sample-3s.mp3", "rb"),
         "title": "song title",
         "description": "song description",
         "tags": "tag",
     _create_user_and_song(client)
 
     data = {
-        "song-file": open("sample-3s.mp3", "rb"),
+        "song-file": open(TEST_DATA/"sample-3s.mp3", "rb"),
         "title": "song title",
         "description": "song description",
         "tags": "tag",
     _create_user(client, "user2", login=True)
 
     data = {
-        "song-file": open("sample-3s.mp3", "rb"),
+        "song-file": open(TEST_DATA/"sample-3s.mp3", "rb"),
         "title": "song title",
         "description": "song description",
         "tags": "tag",
 def test_get_song(client):
     _create_user_and_song(client)
     response = client.get("/song/1/1")
-    with open("sample-3s.mp3", "rb") as mp3file:
+    with open(TEST_DATA/"sample-3s.mp3", "rb") as mp3file:
         assert response.data == mp3file.read()
 
 def test_get_song_invalid_song(client):