⚡ 编程实验室🏗️ HTML🎨 CSS⚡ JavaScript🐍 Python🗄️ SQL☕ Java⚛️ React💚 Vue🟢 Node.js⚙️ C语言🐘 PHP🐹 Go🔷 TypeScript🐬 MySQL🔧 C++🎯 C#🦀 Rust🅱️ Bootstrap💡 jQuery🎸 Django🍃 MongoDB👗 Sass🎪 Kotlin📊 R语言📋 XML📊 Excel🐘 PostgreSQL🐳 Docker🅰️ Angular🎮 游戏🏠 网站首页

测试工厂模式:动态 Fixture 与 Scenario 构建

使用 factory_boy 和 Faker 构建复杂的测试数据场景,结合 pytest fixture 实现可复用的测试上下文。 · 难度:入门 · +10XP

动态测试工厂

传统 Django TestCase 依赖固定 fixtures,维护困难。本教程将教授如何用 factory_boy 创建关联工厂(如用户-订单-商品链),并利用 SubFactory 与 RelatedFactory 自动生成关联数据。同时演示 pytest 的 fixture 作用域与参数化,实现一个 Scenario 类来封装典型业务场景(如“已付款未发货订单”)。

import factory
from myapp.models import Order, User

class UserFactory(factory.django.DjangoModelFactory): class Meta: model = User username = factory.Faker('user_name') email = factory.LazyAttribute(lambda o: f'{o.username}@test.com')

class OrderFactory(factory.django.DjangoModelFactory): class Meta: model = Order user = factory.SubFactory(UserFactory) total = factory.Faker('pydecimal', left_digits=5, right_digits=2) status = 'pending'

Ctrl+Enter
🚀 升级VIP
解锁全部课程+AI助手

🏆 学习排行

加载中...

📊 统计

📖 189 篇
0 完成
🔥 0