練習課題#
Pytestの練習#
以下のテストを書いてみましょう(全部書く必要はありません。)
2つの数字を足して答えが正しいことを確認する
2つの数字を引いて答えが正しいことを確認する
2つの文字列が等しいことを確認する
2つのリストが等しいことを確認する
正の数字が正の数字であることを確認する
負の数字が負の数字であることを確認する
3で割り切れる数字が3で割り切れることを確認する
3で割り切れない数字が3で割り切れないことを確認する
connpass_clientを使った connpass api テスト#
1. conftest.py
にフィクスチャを記述#
event_id="266898"
をリクエストするフィクスチャan_event_data
を書いてください。event_id='273501,272790,271250,270289,269404,266898,264872'
とorder=2
オプションに入れてリクエストするフィクスチャsome_events_data
を書いてください。
Attention
connpass の規約を守るために、 connpass_client
を使う時は、リクエストは5秒以上間隔を開けて行う工夫をしましょう。たとえばセットアップもしくはティアダウンのタイミングで time.sleep(5)
記述するのは良い方法かもしれません。
2. 一つのイベントリクエストに対するテスト#
an_event_data
フィクスチャを使って以下のテストを書いてみましょう。
an_event_data
で得ることができる辞書のキーは、['results_start', 'results_returned', 'results_available', 'events']
である。events
キーに紐づく配列データは1つである。events
キーに紐づく配列に格納された一つの辞書データのキーは['event_id', 'title', 'catch', 'description', 'event_url', 'started_at', 'ended_at', 'limit', 'hash_tag', 'event_type', 'accepted', 'waiting', 'updated_at', 'owner_id', 'owner_nickname', 'owner_display_name', 'place', 'address', 'lat', 'lon', 'series']
と一致する。results_returned
とevents
の配列データ数は一致する。an_event_data
の fixiture のscope
をmodule
とsession
でそれぞれ試し、テスト動作が違うことを確認する。
3. 複数のイベントリクエストに対するテスト#
some_events_data
フィクスチャを使って以下のテストを書いてみましょう。
some_events_data のレスポンスフィールドは、
['results_start', 'results_returned', 'results_available', 'events']
である。events
の配列データは7つである。events
の配列データで返ってくるそれぞれの辞書データのキーは['event_id', 'title', 'catch', 'description', 'event_url', 'started_at', 'ended_at', 'limit', 'hash_tag', 'event_type', 'accepted', 'waiting', 'updated_at', 'owner_id', 'owner_nickname', 'owner_display_name', 'place', 'address', 'lat', 'lon', 'series']
と一致する。イベントIDがリクエストした時のID7つと一致すること。
results_returned
とevents
の配列データ数は一致する。owner_id
は全て36417
である。events
の配列データは、開催日時順が降順(新着順)である。
4. テストの目的からフィクスチャを書く#
以下のテストは、フィクスチャを新規に作る必要が有ります。テストにあわせてフィクスチャを作り、テストを作成してください
event_id="266898"
を3回リクエストし、常に同じレスポンスであることを確認する。event_id="266898"
のレスポンスをいったん CSV に書き出し、一行目が以下の一致すること。event_id,title,catch,description,event_url,started_at,ended_at,limit,hash_tag,event_type,accepted,waiting,updated_at,owner_id,owner_nickname,owner_display_name,place,address,lat,lon,series
任意の
event_id
でリクエストして、常に同じレスポンスが返ってくること。Note
以下は任意のパラメータをフィクスチャに渡す関数例です。
@pytest.fixture def custom_event_data(): def _custom_event_data(**params): cli = ConnpassClient() return cli.get(**params) return _custom_event_dat def test_something(custom_event_data): data = custom_event_data(event_id = "266898") assert data["results_returned"] == 1