reorx
6/5/2016 - 3:35 AM

deptest_menu_order_example.py

# coding: utf-8

import requests
from deptest import depend_on


sessionid = '12345'

login_form = {
    'username': 'foo',
    'password': 'bar'
}


def test_login():
    # session will keep cookie in request context
    s = requests.Session()

    resp = s.post('http://example.com/login', data=login_form)

    print resp.status_code, resp.content, resp.headers
    assert resp.status_code == 200
    assert 'Set-Cookie' in resp.headers
    assert 'sessionid=' in resp.headers['Set-Cookie']

    return s


@depend_on('test_login', with_return=True)
def test_get_menu(s):
    resp = s.get('http://example.com/menu')
    data = resp.json()

    print resp.status_code, resp.content, resp.headers
    assert resp.status_code == 200
    assert len(data) >= 1

    # get the first item of menu, return a tuple
    return s, data[0]  # equal to (s, data[0])


@depend_on('test_get_menu', with_return=True)
def test_post_order(args):
    # args is a tuple
    s, item = args

    resp = s.post('http://example.com/menu/order', data={
        'item_id': item['id']
    })
    data = resp.json()

    print resp.status_code, resp.content, resp.headers
    assert resp.status_code == 200
    assert item['name'] == data['name']


# execute sequence: test_login, test_get_menu, test_post_order