В автотесте не добавляется файл через функцию 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 шт):
Если вы указываете путь относительно родительской папки текущего модуля, то можно через __file__ получить полный путь к самому модулю теста, получить родительскую папку, потом относительно нее вычислить путь нужного файла:
from pathlib import Path
base_directory = Path(__file__).parent
...
picture_2 = {
'picture': open(base_directory / 'files/patrik.jpg', 'rb')
}