File tree 4 files changed +29
-7
lines changed
python_test_example/flask_app 4 files changed +29
-7
lines changed Original file line number Diff line number Diff line change 1
1
import json
2
2
3
- from flask import Flask , jsonify
3
+ from flask import Flask , jsonify , make_response
4
4
5
5
from .service import Service
6
6
11
11
12
12
@app .route ('/' , methods = ['GET' ])
13
13
def index ():
14
- message = {'Message ' : 'ok ' }
15
- return jsonify (message )
14
+ message = {'message ' : 'OK ' }
15
+ return make_response ( jsonify (message ), 200 )
16
16
17
17
@app .route ('/predict' , methods = ['POST' ])
18
18
def predict ():
19
19
print ('Call predict in app' )
20
20
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 )
Original file line number Diff line number Diff line change 1
1
import json
2
2
from unittest import TestCase , main
3
-
4
- from flask_app .app import app
3
+ from unittest .mock import Mock , patch
5
4
6
5
print ('In app_test' )
7
6
8
7
class AppTestCase (TestCase ):
9
8
def setUp (self ):
10
9
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
11
16
self .client = app .test_client ()
12
17
18
+ def tearDown (self ):
19
+ self .load_model_patcher .stop ()
20
+
13
21
def test_index (self ):
14
22
response = self .client .get ('/' )
15
23
self .assertEqual (response .status_code , 200 )
Original file line number Diff line number Diff line change
1
+ def load_model ():
2
+ print ('Call load_model in model' )
3
+ return 'model'
Original file line number Diff line number Diff line change 1
1
from random import randint
2
2
3
+ from .model import load_model
4
+
3
5
print ('In service' )
4
6
5
7
class Service :
6
8
def __init__ (self ):
7
9
print ('Init Service' )
10
+ self .model = load_model ()
11
+ print (f'self.model: { self .model } ' )
8
12
9
13
def predict (self , target : str ):
10
14
print ('Call predict in service' )
11
15
return randint (0 , 1000 ) / 1000.0
16
+
17
+ def check_model (self ):
18
+ if self .model :
19
+ return True
20
+ return False
You can’t perform that action at this time.
0 commit comments