У меня есть небольшое приложение Python (Flask), которое прослушивает порт 8080 для запроса POST. Я пишу несколько юнит-тестов, но мне было интересно, как мне избежать вызова , который он совершает в другой метод, например, для LINE номер 11 в моем модульном тесте, Я просто хочу иметь возможность проверить POST и проверить код ответа 200, если передается правильная информация.
main.py
1 @app.route("/endpoint/", methods=['POST'])
2 def mypostmethod():
3
4 if 'Content-Type' in request.headers and request.headers['Content-Type'] == 'application/json':
5 post_data = request.json
6
7 req_data = request.get_json()
8 content = req_data['content']
9
10 #####--How to avoid this in unit test--start--
11 result = someClass.someMethod(content)
12 #####--How to avoid this in unit test--end--
13
14 return content
15
16 else:
17 if not 'Content-Type' in request.headers:
18 return Response("No Content-Type set in request header", status='400')
19
20 if request.headers['Content-Type'] != 'application/json':
21 return Response("Content-Type in request header should be application/json", status='400')
Мой модульный тест выглядит так:
test_main.py
import json
import main
import unittest
content = 'hello'
class PublicTestCase(unittest.TestCase):
def setUp(self):
self.app = main.app.test_client()
def test_send_valid_request(self):
headers = {
'Content-Type': 'application/json'
}
request_body = {
'content': content
}
response = self.app.post('/endpoint',
headers=headers,
data=json.dumps(request_body),
follow_redirects=True)
assert response.status_code == 200