何时在pytest中使用固定装置而不是仅声明变量

时间:2018-09-06 12:39:39

标签: python pytest

给出如下测试文件...

(摘自https://docs.pytest.org/en/latest/fixture.html的示例)

test_with_fixture.py

import pytest

@pytest.fixture
def smtp_connection():
    import smtplib
    return smtplib.SMTP("smtp.gmail.com", 587, timeout=5)

我想这是一个过于简化的示例,但是以int方式声明smtp连接而不是...有什么好处?

test_without_fixture.py

import smtplib
smtp_connection = smtplib.SMTP("smtp.gmail.com", 587, timeout=5)

在我目前正在编写的测试中,我有很多静态值,例如

expected_result_of_calculation = 10(等)

其中一些是更复杂的数据结构,包括字典和列表。

我应该将它们声明为fixture还是仅将它们放在测试文件的全局范围内?

我猜想当您想通过代码生成测试输入并让夹具返回值时,夹具更有用。这将封装该数据的生成。但是对于我的静态数据呢?他们需要吗?

1 个答案:

答案 0 :(得分:0)

好处:

  • 更容易重用
  • 设置,测试和拆卸的明确区分。