Unittest : How test upload file function with request.file

Viewed 10

I am new at unittest and I want test Function that upload an .ond file but I still don't know how can I use request.file correctly to upload file and send in test : here is my code and test code

def upload_ond_file():

if 'ondFile' not in request.files:
    return 'No file'
directory = 'src/BDDs/BDD_Onduleurs'
if not os.path.isdir(path + directory):
    os.mkdir(path + directory)

file = request.files['ondFile']

file.save(os.path.join(path + directory, file.filename))

The test was like :

import unittest
from urllib import response
from flask_unittest import ClientTestCase

from requests import request
import src.Controller.InverterController as InverterController
from unittest import mock
import io

class SomefileTestCase(unittest.TestCase):
    def test_method_called_from_route(self):
        m = mock.MagicMock()
     
        request.method = "POST"
       testfile 
=open('C:/optisolar/optisolarbe/src/Test/uploads/test_controller_inverter/20170131_SC 2500-EV_MS_V6.ond',"r")
        
    data= testfile.read()
  
   
    data = {'files[]': testfile}


    with mock.patch("src.Controller.InverterController.request", m):

        result = InverterController.upload_ond_file()
        print(result)
if __name__ == '__main__':
    unittest.main()

but when execute code it mentione that there is no file :

    request.url =  <MagicMock name='mock.url' id='1807586099888'>
request.path =  <MagicMock name='mock.path' id='1807586136320'>
request.data = <MagicMock name='mock.data' id='1807586164448'>
request.method = <MagicMock name='mock.method' id='1807586192640'>
request.files = <MagicMock name='mock.files' id='1807586224928'>
request.filesname = <MagicMock name='mock.files.name' id='1807586253120'>
request.filespath = <MagicMock name='mock.files.path' id='1807586289360'>
request.values = <MagicMock name='mock.values' id='1807586317600'>
request.args = <MagicMock name='mock.args' id='1807586345984'>
request.form = <MagicMock name='mock.form' id='1807586374176'>
request.getjson = <MagicMock name='mock.get_json()' id='1807586422544'>
No file
C:\Python39\lib\unittest\case.py:550: ResourceWarning: unclosed file <_io.TextIOWrapper name='C:/optisolar/optisolarbe/src/Test/uploads/test_controller_inverter/20170131_SC 2500-EV_MS_V6.ond' mode='r' encoding='cp1252'>
  method()
ResourceWarning: Enable tracemalloc to get the object allocation traceback
.
----------------------------------------------------------------------
Ran 1 test in 0.025s

OK

my question is how can I upload file (request.file) correctly and send it in test ! thank you in advance

0 Answers
Related