Я создал приложение для колб, в котором я загружаю файл, а затем прогнозирую тип файла. Я хочу написать тестовый блок для того же. Я новичок в модульном тестировании в Python и, следовательно, очень запутался! Мой код состоит из 2 частей, первая из которых - функция Main, которая затем вызывает метод классификации.
main.py - здесь файл загружается, а затем мы вызываем функцию func_predict, которая возвращает вывод
upload_parser = api.parser()
upload_parser.add_argument('file', location='files',
type=FileStorage, required=True)
@api.route('/classification')
@api.expect(upload_parser)
class classification(Resource):
def post(self):
"""
predict the document
"""
args = upload_parser.parse_args()
uploaded_file = args['file']
filename = uploaded_file.filename
prediction,confidence = func_predict(uploaded_file)
return {'file_name':filename,'prediction': prediction,'confidence':confidence}, 201
Forex.py: этот файл содержит функцию func_predict, которая выполняет фактическую работу прогнозирования. Загружает загруженный файл как вход
def func_predict(file):
filename = file.filename #filename
extension = os.path.splitext(filename)[1][1:].lower() #file_extension
path = os.path.join(UPLOAD_FOLDER, filename) #store the temporary path of the file
output = {}
try:
# Does some processing.... some lines which are not relevant and then returns the two values
return (''.join(y_pred),max_prob)
Теперь моя путаница в том, как мне высмеивать загруженный файл, загруженный файл имеет тип FileStorage. Кроме того, какой метод я должен выполнить тестирование, должно ли это быть '/ классификация' или func_predict.
Я попробовал описанный ниже метод, хотя я не добился успеха в этом.
Я создал файл test.py и импортировал метод классификации из main.py, а затем передал имя файла в данные
from flask import Flask, Request
import io
import unittest
from main import classification
class TestFileFail(unittest.TestCase):
def test_1(self):
app = Flask(__name__)
app.debug = True
app.request_class = MyRequest
client = app.test_client()
resp = client.post(
'/classification',
data = {
'file': 'C:\\Users\\aswathi.nambiar\\Desktop\\Desktop docs\\W8_ECI_1.pdf'
}, content_type='multipart/form-data'
)
print(resp.data)
self.assertEqual(
'ok',
resp.data,
)
if __name__ == '__main__':
unittest.main()
Я полностью потерян! Я знаю, что были более ранние вопросы, но я не могу понять.