Jak můžu předstírat request.POST a dostat params pro testování jednotek v baňce?

hlasů
30

Rád bych falešné parametry požadavku pro testování jednotek. Jak mohu dosáhnout v baňce?

Položena 15/09/2011 v 09:43
zdroj uživatelem
V jiných jazycích...                            


5 odpovědí

hlasů
37

Četli jste baňky dokumenty týkající se testování ?

Můžete použít následující:

self.app.post('/path-to-request', data=dict(var1='data1', var2='data2', ...))
self.app.get('/path-to-request', query_string=dict(arg1='data1', arg2='data2', ...))

Aktuální verze vývoj Baňka také obsahuje podporu pro testování JSON API :

from flask import request, jsonify

@app.route('/jsonapi')
def auth():
    json_data = request.get_json()
    attribute = json_data['attr']
    return jsonify(resp=generate_response(attribute))

with app.test_client() as c:
    rv = c.post('/jsonapi', json={
        'attr': 'value', 'other': 'data'
    })
    json_data = rv.get_json()
    assert generate_response(email, json_data['resp'])
Odpovězeno 15/09/2011 v 10:43
zdroj uživatelem

hlasů
29

POŠTA:

self.app.post('/endpoint', data=params)

DOSTAT:

self.app.get('/endpoint', query_string=params)
Odpovězeno 01/06/2014 v 17:48
zdroj uživatelem

hlasů
0

Pořád jsem měla problém s tím, když testování dat po formuláře pro přihlášení v tomto pracoval pro mě.

def login(self, username, password):
    return self.app.post('/', data='Client_id=' + username +'&Password=' + password,
                         follow_redirects=True,content_type='application/x-www-form-urlencoded')

Zjistil jsem, je to pryč tímto způsobem.

Chrome: Režim Developer -> Doc -> HTML doc, které bylo požadováno -> Záhlaví Tab -> dat formuláře -> ukázat zdroj

Odpovězeno 20/10/2016 v 06:16
zdroj uživatelem

hlasů
2

Pokud dáváte přednost použití test_request_context:

import unittest
od myApp dovozních extract_query_params

testApp = flask.Flask (__ name__)

třída TestFoo (unittest.TestCase):
    def test_happy (self):
        s testapp.test_request_context ( 'limit = 1 & offset = 2?'):
            mez, offset = extract_query_params ([ 'omezení', 'offset'])
            self.assertEquals (limit, 1)
            self.assertEquals (offset, 2)
Odpovězeno 17/03/2017 v 01:25
zdroj uživatelem

hlasů
0

Zde je kompletní příklad kódu testu jednotky

testapp = app.test_client()

class Test_test(unittest.TestCase):
    def test_user_registration_bad_password_short(self):
        response = self.register(name='pat',
                                 email='me@mail.com', 
                                 password='Flask', 
                                 password2='Flask')
        self.assertEqual(response.status_code, 200)
        self.assertIn(b'password should be 8 or more characters long', 
                      response.data)

    def register(self, name, email, password, password2):
        return testapp.post(
            '/register',
            data=dict(username=name, 
                      email=email, 
                      password=password, 
                      password2=password2),
            follow_redirects=True
        )
Odpovězeno 29/04/2018 v 23:17
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more