0
私は複数の記事を読んだが、私はそれを得ていない、私は同じメソドロジを別の場所で使用していたが、それは機能した。別のクラスのメソッドで2つの関数を嘲笑
プラグイン/ iaw_api/helpers.py:
import requests
import json
def https_post_json(request_url, headers, data, timeout=20):
response = requests.post(request_url, json=data, headers=headers, timeout=timeout)
return json.loads(response.content)
プラグイン/ iaw_api/iaw_api_runners.py:/ iaw_api/tests.py
from plugins.iaw_api.helpers import https_post_json
class IawApiRunner(object):
def __init__(self, runner_class_in):
self._runner_data_class = runner_class_in
self.result = None
def run_job(self):
if type(self._runner_data_class) == SomeRunner:
self._this_runner()
def _this_runner(self):
_task_id = https_post_json(<request-content>)
print _task_id
テスト:
from plugins.iaw_api.helpers import https_post_json
from plugins.iaw_api.iaw_api_runners import IawApiRunner
class TestApiRunners(unittest.TestCase):
def __init__(self, *args, **kwargs):
super(TestApiRunners, self).__init__(*args, **kwargs)
self.test_runner = IawApiRunner(SomeRunner)
def test_single_run_no_error(self):
with mock.patch('plugins.iaw_api.helpers.https_post_json') as MockPost:
MockPost.return_value = {'status_id': '59f0681cf9c32000132c7e89'}
self.test_runner.run_job()
この私はまだアサーションを追加していません。問題は、実際のhttp_postが模擬戻り値であるレスポンスではなく、APIに行くというテストを実行するときです。