python - 使用模拟对象测试 Python/Django 模型
问题描述
我正在构建一些我想测试的 Django 模型。我试图避免纯粹为了运行单元测试而创建许多不必要的对象。我认为 unittest.mock 可能对此有所帮助,但我真的很难理解它的操作。所有教程示例似乎都与模拟外部 API 调用有关,这是我认为我理解的一个用例,但我开始认为它可能不适用于我的情况,或者我只是完全误解了它。这是一个典型的模型:
class Foo(models.Model):
id = models.AutoField(primary_key=True)
bar = models.ForeignKey(Bar, models.RESTRICT)
...other FKs
baz = models.PositiveIntegerField()
def do_something(self):
return True if self.baz > 10 else False
我的问题是我想测试 do_something() 但我不想创建一个完整的 Foo 对象,其中包含所有这些 FK 的对象。我希望我能做这样的事情,但很明显我在这个过程中出了点问题。
@patch('models.foo.Foo')
class FooTestCase(TestCase):
def test_foo_do_something(self, foo):
f = foo()
f.baz = 20
self.assertTrue(f.do_something())
谁能告诉我哪里出错了?
解决方案
推荐阅读
- javascript - 在循环内设置本地存储项
- python - 如何使表单重定向到 Django 中用户给出的 URL?
- php - 在设置 API 中使用 nonce - WordPress 插件开发
- python - 如何手动缩放 Seaborn Violinplot 的计数
- python - 如何在 Python 中四舍五入到下一个以 2 结尾的整数?
- python - 如何从一个文件到另一个文件获取 Tkinter 输入?
- c# - 从 Windows 服务调用渲染图像时 UserControl 泄漏
- python - 从字符类中减去
- flutter - int 类型不是字符串 Flutter Firebase 类型的子类型
- mongodb - 如何为mongodb做作业