で、viewテストする。モックを使うぞ

これは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

/* -----codeの行番号----- */