L'autre jour, j'ai été troublé par le simulacre de Python, alors je vais laisser un mémorandum.
[unittest.mock --- Bibliothèque d'objets simulés] (https://docs.python.org/ja/3/library/unittest.mock.html) [unittest.mock --- Introduction] (https://docs.python.org/ja/3/library/unittest.mock-examples.html)
Il était officiellement écrit que j'étais inquiet environ 2 heures. La formule est géniale
tori01.py
import requests
def get_qiita(url):
    response = requests.get(url)
    return response
Obtenez simplement l'URL et renvoyez la réponse renvoyée
test_tori01.py
import unittest
from mock import Mock, patch
import tori01
class TestTori01(unittest.TestCase):
    @patch("tori01.requests.get")
    def test_get_response(self, requests_get):
        requests_get.return_value.status_code = 200
        res = tori01.get_response("mock.url")
        self.assertEqual(res.status_code, 200)
Vérification des assertions avec code d'état Cette fois sur la base de ces codes
Puisque requests est importé dans tori01.py
Corrigé avec @ patch (" tori01.requests.get ")
S'il s'agit de tori01.py et que requests.get est importé
Il ne sera pas patché sauf si vous faites @ patch (" tori01.get ")
tori01.py
#Modifié par rapport aux demandes d'importation
from requests import get
def get_response(url):
    response = get(url)
    return response
test_tori01.py
import unittest
from mock import Mock, patch
import tori01
class TestTori01(unittest.TestCase):
    # @patch("tori01.requests.get")Changer de
    @patch("tori01.get")
    def test_get_response(self, requests_get):
        requests_get.return_value.status_code = 200
        res = tori01.get_response("mock.url")
        self.assertEqual(res.status_code, 200)
test_tori01.py
import unittest
from mock import Mock, patch
import tori01
class TestTori01(unittest.TestCase):
    # @patch("tori01.requests.get")Changer de
    #La dénomination des arguments est également des requêtes.Passer des demandes d'accès aux demandes
    @patch("tori01.requests")
    def test_get_response(self, requests):
        # requests_get.return_value.status_code =Changé de 200
        requests.get.return_value.status_code = 200
        res = tori01.get_response("mock.url")
        self.assertEqual(res.status_code, 200)
Vous pouvez vérifier l'argument lorsqu'il est appelé.
test_tori01.py
import unittest
from mock import Mock, patch
import tori01
class TestTori01(unittest.TestCase):
    @patch("tori01.requests.get")
    def test_get_response(self, requests_get):
        #Créez une fonction qui retourne mock pour pouvoir l'appeler.
        def requests_get_mock(url):
            return Mock(status_code = 200, url = url)
        requests_get.side_effect = requests_get_mock
        res = tori01.get_response("mock.url")
        self.assertEqual(res.status_code, 200)
        self.assertEqual(res.url, "mock.url")
test_tori01.py
import unittest
from mock import Mock, patch
import tori01
class TestTori01(unittest.TestCase):
    @patch("tori01.requests.get")
    def test_get_response(self, requests_get):
        requests_get.return_value.status_code = 200
        res = tori01.get_response("mock.url")
        self.assertEqual(res.status_code, 200)
        requests_get.assert_called_with("mock.url") #ajouter à
test_tori01.py
import unittest
from mock import Mock, patch
import tori01
class TestTori01(unittest.TestCase):
    @patch("tori01.requests.get")
    def test_get_response(self, requests_get):
        vals = {"mock.url":200, "error_mock.url":404}
        def requests_get_mock(val):
            return Mock(status_code = vals[val])
        requests_get.side_effect = requests_get_mock
        res = tori01.get_response("mock.url")
        res_error = tori01.get_response("error_mock.url")
        self.assertEqual(res.status_code, 200)
        self.assertEqual(res_error.status_code, 404)
test_tori01.py
import unittest
import requests
from mock import Mock, patch
import tori01
class TestTori01(unittest.TestCase):
    @patch("tori01.requests.get")
    def test_get_response(self, requests_get):
        # side_Si vous définissez une classe d'exception pour l'effet, une exception sera levée
        requests_get.side_effect = requests.HTTPError
        with self.assertRaises(requests.HTTPError):
            tori01.get_response("mock.url")
Maquette magique ...
Recommended Posts