更新: | 2013-02-28 |
---|---|
バージョン: | 0.0.2 |
作者: | @voluntas |
URL: | http://voluntas.github.com/ |
fab コマンドを実行すると Webmachine サーバを起動して、その後 pytest 経由で requests による API テストを実行。その後 Webmachine を終了するというのを作ってみました。
まずはローカルで動かすためのコマンドです。
やってることはたいした事じゃ無いです。
- snowflake のフォルダまで移動して make devrel を実行する
- dev/snowflake/bin/snowflake start で Webmachine を起動する
- snowpack (Webmachine のテストが入っているフォルダ) まで移動して py.test を実行する
- 結果に関係なく snowflake のフォルダまで移動して Webmachine を終了する
$ fab webmachine [localhost] local: make devrel ==> snowflake (compile) ==> snowflake (xref) mkdir -p dev mkdir -p deps (cd rel && rm -rf ../dev/snowflake && ../rebar generate target_dir=../dev/snowflake) ==> rel (generate) rm -rf dev/snowflake/lib/eredis-* && ln -sf /Users/v/work/snowflake/deps/eredis dev/snowflake/lib; rm -rf dev/snowflake/lib/erlando-* && ln -sf /Users/v/work/snowflake/deps/erlando dev/snowflake/lib; rm -rf dev/snowflake/lib/hackney-* && ln -sf /Users/v/work/snowflake/deps/hackney dev/snowflake/lib; rm -rf dev/snowflake/lib/ibrowse-* && ln -sf /Users/v/work/snowflake/deps/ibrowse dev/snowflake/lib; rm -rf dev/snowflake/lib/lhttpc-* && ln -sf /Users/v/work/snowflake/deps/lhttpc dev/snowflake/lib; rm -rf dev/snowflake/lib/mimetypes-* && ln -sf /Users/v/work/snowflake/deps/mimetypes dev/snowflake/lib; rm -rf dev/snowflake/lib/mochiweb-* && ln -sf /Users/v/work/snowflake/deps/mochiweb dev/snowflake/lib; rm -rf dev/snowflake/lib/webmachine-* && ln -sf /Users/v/work/snowflake/deps/webmachine dev/snowflake/lib; rm -rf dev/snowflake/lib/snowflake-* rm -rf dev/snowflake/lib/snowflake mkdir dev/snowflake/lib/snowflake ln -sf /Users/v/work/snowflake/ebin dev/snowflake/lib/snowflake/ebin ln -sf /Users/v/work/snowflake/priv dev/snowflake/lib/snowflake/priv [localhost] local: dev/snowflake/bin/snowflake start [localhost] local: py.test ========================================= test session starts ========================================= platform darwin -- Python 2.7.3 -- pytest-2.3.4 plugins: cov collected 1 items users_test.py . ====================================== 1 passed in 0.42 seconds ======================================= [localhost] local: dev/snowflake/bin/snowflake stop ok Done.
users_test.py
import simplejson as json
import requests
def test_users():
"""
"""
url = 'http://localhost:8080/users/spam/'
payload = {'password': 'eggs'}
headers = {'content-type': 'application/json'}
r = requests.put(url, data=json.dumps(payload), headers=headers)
assert r.status_code == 201
assert json.loads(r.text) == {'user_id': 'spam', 'password': 'eggs'}
r = requests.get(url)
assert r.status_code == 200
assert json.loads(r.text) == {'user_id': 'spam', 'password': 'eggs'}
fabfile.py
from fabric.api import local, lcd
def webmachine():
with lcd('/Users/v/work/snowflake'):
local('make devrel')
local('dev/snowflake/bin/snowflake start')
with lcd('/Users/v/work/snowpack'):
local('py.test')
with lcd('/Users/v/work/snowflake'):
local('dev/snowflake/bin/snowflake stop')