В автотесте не добавляется файл через функцию open

В директории есть папка files, в которой лежит файл с названием football.mp4.

В папке configs у меня лежит python файл post_json.py в котором я прописываю путь к файлу football.mp4 с помощью функции open

video_2 = {
        'video': open('files/football.mp4', 'rb')
    }

post_json_video_with_text = {
            'text': 'TEST POST VIDEO MP4'
        }

Затем я импортирую папку configs в тест:

from endpoints.PostController import PostController
from configs.post_json import *

def test_create_video_post_text():
    request_post_create = PostController().create_post(files=video_2, data=post_json_video_with_text)
    assert request_post_create['status']['statusCodeValue'] == 200

После запуска теста с помощью команды

pytest
tests/UserStoryTests/test_create_post.py::test_create_video_post_text

Мне приход ответ 407, который говорит о том что файл не добавлен.

Что я делаю не так?

Тоже самое у меня происходит в тесте, где сначала я регистрирую пользователя, а затем меняю аватарку зареганного пользователя. Регистрация проходит успешно, но как только доходит до добавления изображения, оно также не вставляется. Причем если в конце теста я его просто распечатаю используя print(b) то вернется 200, тест успешно пройден.

Вот тест:

from endpoints.AdminAccountController import AdminAccountController
from configs.admin_account_json import *
from endpoints.ProfileUpdate import ProfileUpdate
from configs.post_json import *
import allure
import pytest


@pytest.mark.parametrize("users, pictures, expected_email, expected_nickname, expected_role",
                         [(user_1, picture_2, "[email protected]", "kukistesting", "ROLE_USER")])
def test_registration_user_create(users, pictures, expected_email, expected_nickname, expected_role):
    c = AdminAccountController().create_account(users)
    assert c['body']['email'] == expected_email and c['body']['nickname'] == expected_nickname \
           and c['body']['role'] == expected_role
    b = ProfileUpdate().update_photo(files=pictures)
    assert b['status']['statusCode'] == 200

Я также передаю изображение, используя метод который находится в классе параметра b

Для этого обращаюсь в файл post_json, где лежит путь к изображению, которое находится в папке files:

picture_2 = {
    'picture': open('files/patrik.jpg', 'rb')
}

Ответы (1 шт):

Автор решения: insolor

Если вы указываете путь относительно родительской папки текущего модуля, то можно через __file__ получить полный путь к самому модулю теста, получить родительскую папку, потом относительно нее вычислить путь нужного файла:

from pathlib import Path

base_directory = Path(__file__).parent

...

picture_2 = {
    'picture': open(base_directory / 'files/patrik.jpg', 'rb')
}
→ Ссылка