Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk mengejek Permintaan dan Respons HTTP dalam Senario Ujian Python?
Permintaan dan Respons Mengejek untuk Ujian Python
Dalam ujian Python, modul dan fungsinya menjadi perlu untuk mengawal aliran pelaksanaan dan mengesahkan senario tertentu. Antaranya, mengejek modul permintaan biasanya digunakan untuk menguji fungsi atau kaedah yang bergantung pada permintaan HTTP.
Pertimbangkan fail views.py dengan kod berikut:
<code class="python">def myview(request): res1 = requests.get('aurl') res2 = request.get('burl') res3 = request.get('curl')</code>
Untuk mengejek ini tingkah laku, anda boleh menggunakan pakej olok-olok Python. Begini cara anda boleh mencapainya langkah demi langkah:
Langkah 1: Tentukan Gelagat Olok-olok
Untuk mengejek modul permintaan, tentukan fungsi yang akan menggantikan requests.get (). Dalam fungsi ini, anda boleh menentukan respons yang diingini untuk setiap URL.
<code class="python">def mocked_requests_get(*args, **kwargs): class MockResponse: def __init__(self, json_data, status_code): self.json_data = json_data self.status_code = status_code def json(self): return self.json_data if args[0] == 'aurl': return MockResponse({'a': 'a'}, 200) elif args[0] == 'burl': return MockResponse({'b': 'b'}, 200) elif args[0] == 'curl': return MockResponse({'c': 'c'}, 200) return MockResponse(None, 404)</code>
Langkah 2: Tampal Modul Permintaan
Dalam kes ujian anda, gunakan mock .patch() penghias untuk menggantikan modul permintaan sebenar dengan fungsi olok-olok anda.
<code class="python">@mock.patch('requests.get', side_effect=mocked_requests_get) def test_myview(self, mock_get): # Call the function you want to test myview(None) # Assertions for expected responses ...</code>
Langkah 3: Sahkan Penegasan
Dalam fungsi ujian anda, anda boleh menggunakan penegasan untuk mengesahkan bahawa respons yang dijangkakan dikembalikan.
<code class="python">self.assertEqual(mock_get.call_args_list[0][0][0], 'aurl') self.assertEqual(mock_get.call_args_list[1][0][0], 'burl') self.assertEqual(mock_get.call_args_list[2][0][0], 'curl')</code>
Dengan mengikut langkah ini, anda boleh mengejek permintaan HTTP dengan berkesan dan mengawal respons dalam senario ujian Python anda. Ini membolehkan anda mengasingkan dan menguji kefungsian tertentu sambil memastikan kebergantungan luaran tidak mengganggu keputusan anda.
Atas ialah kandungan terperinci Bagaimana untuk mengejek Permintaan dan Respons HTTP dalam Senario Ujian Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!