これはviewなのでDjango前提で書いている。
from django.core.urlresolvers import reverse from django.test import TestCase from mock import patch import requests class PollsTests(TestCase): def test_polls_view_status_code(self): print '-' url = reverse('index') #’reverseでindexのURLを求める viewのテストなので、、 response = self.client.get(url,"") #'djangoテスト用クライアント GET呼び出し実施 self.assertEquals(response.content,'Hello Nikotto World') #戻り値の検証 self.assertEquals(response.status_code, 200) def test_polls_view_status_code2(self): print '-' class MockResponse: #モック用のレスポンス定義 def __init__(self): self.content='dummy' self.raise_for_status= lambda : None self.status_code = 200 self.headers=Mockheaders() class Mockheaders: #’モック用のヘッダクラス def __init__(self): self.get=lambda x,y : "text/plain" with patch.object(requests, 'get', return_value=MockResponse()): #モックを適用 url = reverse('index') response = self.client.get(url,{'url': 'xxx'}) #'djangoのテスト用クライアント経由で、GET呼び出し実施 self.assertEquals(response.content,'dummy') #モック返却値が期待値 self.assertEquals(response.status_code, 200)
フォルダ構造はこんな感じ、ネタ元が本家の「はじめての Django アプリ作成、その 1」なので、構造がまんま同じです。
色んなサイトみるより本家のチュートリアルを見るべきだな、、
はじめての Django アプリ作成、その 1 | Django ドキュメント | Django
C:\Users\Owner\mysite λ tree /F フォルダー パスの一覧 ボリューム シリアル番号は 1651-93AO です C:. │ .coverage │ db.sqlite3 │ manage.py │ ├─htmlcov │ coverage_html.js │ index.html │ jquery.ba-throttle-debounce.min.js │ jquery.hotkeys.js │ jquery.isonscreen.js │ jquery.min.js │ jquery.tablesorter.min.js │ keybd_closed.png │ keybd_open.png │ polls_admin_py.html │ polls_apps_py.html │ polls_migrations___init___py.html │ polls_models_py.html │ polls_tests_test_view1_py.html │ polls_tests___init___py.html │ polls_urls_py.html │ polls_views_py.html │ polls___init___py.html │ status.json │ style.css │ ├─mysite │ settings.py │ settings.pyc │ urls.py │ urls.pyc │ wsgi.py │ wsgi.pyc │ __init__.py │ __init__.pyc │ └─polls │ admin.py │ apps.py │ models.py │ tests.pyc │ urls.py │ urls.pyc │ views.py │ views.pyc │ __init__.py │ __init__.pyc │ ├─migrations │ __init__.py │ └─tests ★polls\tests.pyを削除し、フォルダを作成 test_view1.py test_view1.pyc <b> __init__.py</b> ★testさせるため、これを追加で置いた、中身は空、 __init__.pyc