Dostaję się do testowania w Pythonie i zadałem sobie pytanie, jak przetestować tę metodę.W jaki sposób testujesz funkcję za pomocą której pobiera dane przez urllib2?
def get_response(self, url, params):
encoded_params = urllib.urlencode(params)
request = urllib2.Request(BASE_URL, headers=HEADERS)
response = urllib2.urlopen(request, encoded_params)
return response
Jak najlepiej można to osiągnąć za pomocą doctest lub unpittest? Pomyślałem o przekazaniu adresu URL testu i niektórych parametrów testowych, które istnieją w świecie rzeczywistym i sprawdzeniu, czy response.read()
zwraca oczekiwane dane. Ale jakoś mi się wydaje, że tak nie powinno być. Jakieś sugestie? Byłbym wdzięczny za sugestie dotyczące postępowania z takimi przypadkami w kontekście pisania wiadomości tekstowych.
Najpierw zdefiniuj kontrakt, którego powinna przestrzegać metoda. Kontury postu testujące * zaakceptowaną odpowiedź *, ale teraz, jak należy rozwiązywać awarie. Testowanie rzeczywistych * danych * brzmi jednak bardziej jak test integracyjny. –
Zajrzyj do kodu naukowego scikit (licencjonowanego przez BSD), który dokładnie to robi; [testcases] (https://github.com/scikit-learn/scikit-learn/blob/master/scikits/learn/datasets/tests/test_mldata.py), ['mock_urllib2'] (https://github.com /scikit-learn/scikit-learn/blob/master/scikits/learn/utils/testing.py#L55). –