使用VCR模拟外部API并消除网络依赖
通过录制-重放HTTP交互,确保测试稳定且快速,无需真实API调用。 · 难度:入门 · +10XP
VCR模式下的API测试
常见的测试使用unittest.mock,但本教程教你集成vcrpy库,录制第一次真实API请求,后续测试重放记录。你将学会如何编写一个基于VCR的TestCase类,自动为每个测试方法创建独立的cassette文件,并处理请求匹配规则(如忽略动态header中的token)。同时介绍如何对敏感信息(如API Key)进行过滤替换,确保cassette文件可分享。
import vcr
from django.test import TestCase
my_vcr = vcr.VCR(
cassette_library_dir='fixtures/vcr_cassettes',
record_mode='once',
filter_headers=['authorization'],
)
class ExternalAPITest(TestCase):
@my_vcr.use_cassette('get_user_profile.yaml')
def test_fetch_profile(self):
response = self.client.get('/api/user/profile/')
self.assertEqual(response.status_code, 200)