- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在玩弄 Python 中的模拟自动规范。这是一个基本测试用例,其中我使用 create_autospec 自动指定 Django User
类.
from unittest.mock import create_autospec
from django.contrib.auth.models import User
def test_mock_spec():
user = create_autospec(User, spec_set=True, instance=True, username="batman")
assert user.username == "batman"
with pytest.raises(AttributeError):
create_autospec(User, spec_set=True, x1=1)
with pytest.raises(AttributeError):
assert user.x2
当我同时设置instance=True
和instance=False
时,测试通过了,那么这个参数到底有什么作用呢?它的目的是什么?我看到多篇博客文章将其设置为 True
(here 和 here),所以我觉得这很重要。
文档说了以下内容,但对我来说没有意义:
If a class is used as a spec then the return value of the mock (the instance of the class) will have the same spec. You can use a class as the spec for an instance object by passing instance=True. The returned mock will only be callable if instances of the mock are callable.
最佳答案
考虑模拟 int
类。与大多数类一样,int
是可调用的,因此 int
类的模拟也应该是可调用的。
另一方面,考虑模拟一个 int
实例。整数不可调用,因此模拟的整数也不应该是可调用的。
instance
参数让您可以控制获得哪些行为。 create_autospec(int, instance=False)
返回可调用模拟,而 create_autospec(int, instance=True)
返回不可调用模拟。如果你这样做
m1 = create_autospec(int, instance=False)
m2 = create_autospec(int, instance=True)
m1()
m2()
只有 m2()
行会引发异常。
关于python - Python 的 create_autospec 中的实例参数有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67258566/
我正在玩弄 Python 中的模拟自动规范。这是一个基本测试用例,其中我使用 create_autospec 自动指定 Django User 类. from unittest.mock import
我试图了解这两种模拟构造之间的区别,以及何时适合使用它们。我在解释器中对其进行了测试,例如: >>> mm = mock.MagicMock(spec=list) >>> ca = mock.crea
我是一名优秀的程序员,十分优秀!