私は基本的に魔法のモックとコンテキストマネージャを使って自分のコードをテストしています。私はget_urls関数をうまく模倣できましたが、私のaccess_all_repos_pr() PRの7日より新しいものは誰でもそのデータを模擬する方法について私に助けてくれるでしょう。ここでMagic Mockを使ってGithub Apiをテストする
)が(私のget_urlsのためのテストコードです:
import unittest
from mock import MagicMock, patch
from contextlib2 import ExitStack
from GithubAPIpackage.GithubAPI import get_urls
class Test_GithubApi(unittest.TestCase):
def test_get_urls_returns_valid_urls(self):
with ExitStack() as stack:
mock_get_urls = stack.enter_context(
patch("GithubAPIpackage.GithubAPI._fetch_url")
)
fake_data = {"current_user_repositories_url": "http://FAKEURL.com"}
mock_get_urls.return_value = fake_data
print(type(fake_data))
result = get_urls()
self.assertEqual(result, "http://FAKEURL.com")
私は誰もが、私はモックを作成するために、正確に何をする必要があるかで私を助けることができ、機能access_all_repo_prの応答をモックとしたいです私のaccess_all_repo_pr関数のために。何らかの方法でコードをリファクタリングする必要がありますか?私が何をしようとしています(のpythonに比較的新しい)
は次のとおりです。
class Test_GithubApi_newer_than_7_days(unittest.TestCase):
def test_access_all_repo_pr_returns_valid_response(self):
with ExitStack() as stack:
mock_access_all_repo_pr = stack.enter_context(
patch("GithubAPIpackage.GithubAPI._fetch_url")
)
fake_data = {"current_user_repositories_url": "http://myfakeurl.com"}
mock_access_all_repo_pr.return_value = fake_data
result = access_all_repo_pr()
self.assertEqual(result, "")