0

次の pytest-test は、httpretty を使用してリクエストをモックします。取得したデータをファイルに書き込みます。

import requests
import httpretty
import json
from os import listdir
from os.path import join

@httpretty.activate
def test_write_file_from_datasource():
    tmpdir = './mytestdir'

    # mock the connection
    concert_url = 'http://apis.is/concerts'
    httpretty.register_uri(httpretty.GET, concert_url,
                           body = json.dumps({'results': []}),
                           content_type='application/json')
    # fetch data
    concerts = requests.get(concert_url).json()

    # write data
    with open(join(tmpdir, 'concerts.json'), 'w') as json_data:
        json.dump(concerts, json_data, indent=2)

    assert len(listdir(tmpdir)) == 1

私が今やりたいことは、pytest tmpdir機能を利用することです。これに到達するために、次のようなテストを作成しました (インポートは上記と同じです):

@httpretty.activate
def test_write_file_from_datasource_failing(tmpdir):
    tmpdir = str(tmpdir)
    # mock the connection
    concert_url = 'http://apis.is/concerts'
    httpretty.register_uri(httpretty.GET, concert_url,
                           body = json.dumps({'results': []}),
                           content_type='application/json')
    # fetch data
    concerts = requests.get(concert_url).json()

    # write data
    with open(join(tmpdir, 'concerts.json'), 'w') as json_data:
        json.dump(concerts, json_data, indent=2)

    assert len(listdir(tmpdir)) == 1

httpretty デコレーターが追加のパラメーターに問題があるように見えるため、失敗します。

TypeError: test_write_file_from_datasource_failing() takes exactly 1 argument (0 given)

これを修正する方法はありますか?

4

1 に答える 1