簡體   English   中英

如何在flask應用程序中使用unittest在測試用例中發送帶有表單數據的圖像?

[英]How to send image with form data in test case with unittest in flask application?

我是 Python 新手,我正在制作 Flask 應用程序。 所以,我想使用 unittest 為我的應用程序編寫測試用例,我這樣做:

def test_bucket_name(self):
    self.test_app = app.test_client()
    response = self.test_app.post('/add_item', data={'name':'test_item','user_id':'1','username':'admin'})                                      
    self.assertEquals(response.status, "200 OK")

這一切都很好。 但是我在一個 URL 中使用 POST 發布了一些數據和圖像。 所以,我的問題是:“我如何發送帶有這些數據的圖像?

將圖像讀入StringIO緩沖區。 將圖像作為表單數據中的另一項傳遞,其中值是 (image, filename) 的元組。

def test_bucket_name(self):
    self.test_app = app.test_client()

    with open('/home/linux/Pictures/natural-scenery.jpg', 'rb') as img1:
        imgStringIO1 = StringIO(img1.read())

    response = self.test_app.post('/add_item',content_type='multipart/form-data', 
                                    data={'name':'test_item',
                                          'user_id':'1',
                                          'username':'admin',
                                          'image': (imgStringIO1, 'img1.jpg')})
    self.assertEquals(response.status, "200 OK")

上面的答案是正確的,除了在我的情況下,我必須像下面這樣使用 BytesIO:

    def create_business(self, name):
        with open('C:/Users/.../cart.jpg', 'rb') as img1:
            imgStringIO1 = BytesIO(img1.read())
        return self.app.post(
            '/central-dashboard',
            content_type='multipart/form-data',
            data=dict(name=name, logo=(imgStringIO1, 'cart.jpg')),
            follow_redirects=True
        )

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM