Я запускаю модульное тестирование для тестирования API, который отлично работает при тестировании с Postman. API принимает два параметра в форме {"body":"hey","title":"title"}
и добавляет эти значения в базу данных на основе созданных мной моделей. Ответ возвращается в аналогичном формате с дополнительным ключом id
, полученным из базы данных. Дело в том, что он отлично работает с почтальоном. Однако при тестировании с использованием Pytest просто не работает.
Вот код в файле теста.
import os
import unittest
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
# from flask_backend import app
# from flask_backend.core import db
class BasicTests(unittest.TestCase):
app = Flask(__name__)
db = SQLAlchemy(app)
def setUp(self):
file_path = os.path.abspath(os.getcwd()) + "\database_test.db"
self.app.config['TESTING'] = True
self.app.config['DEBUG'] = False
self.app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///' + file_path
self.app = self.app.test_client()
self.db.drop_all()
self.db.create_all()
def tearDown(self):
self.db.session.remove()
class TestApi(BasicTests):
def test_add_post(self):
url = 'http://127.0.0.1:5000'
parameters = {'body': 'Body', 'title': 'title'}
response = self.app.post(url+'/api/dbapi/post/', data=parameters)
print(self.app)
self.assertEqual(response.status_code, 200)
if __name__ == '__main__':
unittest.main()
Я думаю, что во время выполнения теста сервер не запускается и, следовательно, возникает ошибка 404.
Причина, по которой я не импортирую переменную приложения из самого проекта, заключается в том, что модуль не импортируется. Я задал вопрос в другой ветке. Вот ссылка на него: Невозможно импортировать файлы из родительского каталога, даже если в нем есть файл __init__.py
Из того, что я понимаю, если я могу импортировать экземпляр приложения, используется в самом проекте, я должен быть хорошим, но это тоже не работает.