如何解决Pytest:对多个测试使用相同的变量
我目前正在开发Flask应用,并使用pytest进行单元测试。我还是Python类结构,flask和测试的新手。
请参考下面的示例代码:
from somewhere import search_person
class TestMethodOne:
def test_method_with_x(self):
person = {
"first_name": "John","last_name": "Smith","state": "CA"
}
assert search_person(person) is not None
def test_method_with_y(self):
person = {
"first_name": "John","state": "CA"
}
assert search_person(person)["full_name"] == "John M Smith"
search_person方法利用了第三方API,并需要一些时间来运行,我希望对此进行干燥,以使测试不会进行多余的调用。有没有一种方法可以设置此方法,以便一旦pytest创建此类并且所有测试方法都将引用该变量后就已经调用了search_person(person)?
解决方法
检出pytest固定装置功能: https://docs.pytest.org/en/stable/fixture.html#scope-sharing-fixtures-across-classes-modules-packages-or-session
需要网络访问权限的固定装置取决于连接性,并且创建时间通常很长。 ....我们可以在@ pytest.fixture调用中添加scope =“ module”参数,以使装饰的smtp_connection夹具功能仅在每个测试模块中调用一次(默认是每个测试函数调用一次)。 因此,测试模块中的多个测试功能将各自接收相同的smtp_connection夹具实例,从而节省时间。范围的可能值为:功能,类,模块,包或会话
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。