簡體   English   中英

處理燒瓶POST單元測試的最佳方法

[英]Best way to handle flask POST unit test

我有以下代碼,該代碼接受POST請求並對其進行處理。

index.py

@app.route('/route', methods=['POST'])
def route_post():
    try:
        data = request.get_data()
        j = json.loads(data)
    except Exception as e:
    ...

基本上,我想訪問request.get_data()以便更改值。 我正在調用如下所示的測試,這很簡單。

route_test.py:

def test_route():
    assert(("Bad Request\r\n", 400) == route_post())

但是不允許我設置request.get_data()的值。 我怎樣才能做到這一點?

使用測試客戶端將所需的任何數據發布到路由。 如果data是字符串或字節,Werkzeug將數據直接作為字節發送。

from flask import Flask, request

app = Flask(__name__, static_folder=None)

@app.route('/', methods=['POST'])
def index():
    return request.get_data()

c = app.test_client()
r = c.post('/', data='Hello, World!')
print(r.data)  # b'Hello, World!'

您可以使用模擬對象來修補請求對象的get_data方法,該模擬對象將返回您告訴其返回的內容。 類似於以下內容:

from mock import patch

@patch('flask.Request.get_data')
def test_route_post(self, get_deta_mock):
    get_deta_mock.return_value = '{"foo": "bar"}'
    result = route_post()
    assert result['foo'] == 'bar'

暫無
暫無

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

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