2017-11-20 2 views
1

Ich bin im Grunde mit magischen Mock und Context-Manager, um meinen Code zu testen, konnte ich meine get_urls Funktion verspotten, aber ich habe Probleme zu verspotten meine access_all_repos_pr(): Funktion, die Daten enthält von PR neuer als 7 Tage, kann mir jemand helfen, wie man diese Daten vortäuscht. HierVerwenden von Magic Mock zum Testen Github Api

ist der Test-Code für mein 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") 

Ich will die Antwort für die Funktion access_all_repo_pr verspotten, jemand mir helfen kann, was ich brauche genau das zu tun ein Modell zu erstellen für meine access_all_repo_pr Funktion. Muss ich meinen Code irgendwie umgestalten? (Relativ neu in Python)

was ich versuche:

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, "") 

Antwort

1

Da Sie requests unter der Haube verwenden, könnte darauf hindeuten, ich responses für Ihre Tests verwenden? Ich versuche nicht, die Frage zu umgehen, aber nach meiner Erfahrung habe ich festgestellt, dass dies der Weg des geringsten Widerstands ist, wenn es darum geht, Tests zu schreiben, die sich mit dem requests Modul befassen. Die Tests sind viel sauberer, sicherer und einfacher zu schreiben.