Skip to content

Commit 96026eb

Browse files
committed
Add patch to flask_app/app_test
1 parent 9e8da81 commit 96026eb

File tree

4 files changed

+29
-7
lines changed

4 files changed

+29
-7
lines changed

python_test_example/flask_app/app.py

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import json
22

3-
from flask import Flask, jsonify
3+
from flask import Flask, jsonify, make_response
44

55
from .service import Service
66

@@ -11,12 +11,14 @@
1111

1212
@app.route('/', methods=['GET'])
1313
def index():
14-
message = {'Message': 'ok'}
15-
return jsonify(message)
14+
message = {'message': 'OK'}
15+
return make_response(jsonify(message), 200)
1616

1717
@app.route('/predict', methods=['POST'])
1818
def predict():
1919
print('Call predict in app')
2020
target = 'A'
21-
message = {'result': service.predict(target)}
22-
return jsonify(message)
21+
if not service.check_model:
22+
return make_response(jsonify({'message': 'Service Unavailable'}), 503)
23+
result = {'result': service.predict(target)}
24+
return make_response(jsonify(result), 200)

python_test_example/flask_app/app_test.py

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,23 @@
11
import json
22
from unittest import TestCase, main
3-
4-
from flask_app.app import app
3+
from unittest.mock import Mock, patch
54

65
print('In app_test')
76

87
class AppTestCase(TestCase):
98
def setUp(self):
109
print('Call setUp in AppTestCase')
10+
11+
self.load_model_patcher = patch('flask_app.model.load_model')
12+
self.load_model_m = self.load_model_patcher.start()
13+
self.load_model_m.return_value = 'test'
14+
15+
from flask_app.app import app
1116
self.client = app.test_client()
1217

18+
def tearDown(self):
19+
self.load_model_patcher.stop()
20+
1321
def test_index(self):
1422
response = self.client.get('/')
1523
self.assertEqual(response.status_code, 200)
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
def load_model():
2+
print('Call load_model in model')
3+
return 'model'
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,20 @@
11
from random import randint
22

3+
from .model import load_model
4+
35
print('In service')
46

57
class Service:
68
def __init__(self):
79
print('Init Service')
10+
self.model = load_model()
11+
print(f'self.model: {self.model}')
812

913
def predict(self, target: str):
1014
print('Call predict in service')
1115
return randint(0, 1000) / 1000.0
16+
17+
def check_model(self):
18+
if self.model:
19+
return True
20+
return False

0 commit comments

Comments
 (0)