gpt4 book ai didi

python - 测试 python 类对象实例

转载 作者:行者123 更新时间:2023-12-01 00:14:39 25 4
gpt4 key购买 nike

我有一个我想测试的函数:

def get_django_model(django_model):
try:
app_config = apps.get_app_config("myapp")
model = app_config.get_model(django_model)
return model
except Exception:
raise DjangoModelMissing(f"Missing django model: {django_model}")

这是我的测试:

class ModelInstanceTest(TestCase):
def test_get_django_model(self):
model_class = get_djagno_model("Foo")
self.assertIsInstance(model_class, models.Foo)

上述测试失败,显示AssertionError: <class 'models.Foo'> is not an instance of <class 'models.Foo'>

但是如果我替换 assertIsInstanceassertIs测试通过。

有人可以解释一下这是怎么回事吗?

这篇文章是相关的,但并没有真正解释不同的结果:Python test to check instance type .

最佳答案

您的get_django_model函数返回对的引用,而不是该类的对象(实例)。因此它不会返回 Foo 对象,而是返回对 Foo 类的引用。

因此,model_class 确实等于 models.Foo,但不是 models.Foo 的实例。然而,它是 type 的一个实例,因此您可以检查:

class ModelInstanceTest(TestCase):

def test_get_django_model(self):
model_class = get_djagno_model('Foo')
self.assertIsInstance(model_class, <b>type</b>)
self.assertEqual(model_class, models.Foo)

关于python - 测试 python 类对象实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59410316/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com