pytest:fixture方法与conftest.py

在Python中,我们经常用到@pytest.fixture装饰器去参数化case,如果你的@pytest.fixture装上函数需要在很多文件中使用,则可以把它写进conftest.py文件中。这个文件中的方法在运行pytest不需要被import,它会被pytest自动发现,发现顺序是:test classess, test modules, conftest.py,最后是内置和第三方插件。

举例:

# content of conftest.py
import pytest
import smtplib
@pytest.fixture(scope="module") 
def smtp_connection():
return smtplib.SMTP("smtp.gmail.com", 587, timeout=5)

 

content of test_module.py
def test_ehlo(smtp_connection):
response, msg = smtp_connection.ehlo()
assert response == 250
assert b"smtp.gmail.com" in msg
assert 0 # for demo purposes
def test_noop(smtp_connection):
response, msg = smtp_connection.noop()
assert response == 250
assert 0 # for demo purposes

其他:scope="session  " 一个pytest session调用一次;scope="module" 一个模块调用一次;scope="class" 一个class调用一次;scope="function"一个方法调用一次

 

pytest.fixture  scope范围回调

def determine_scope(fixture_name, config):
    if config.getoption("--keep-containers", None):
        return "session"
    return "function"


@pytest.fixture(scope=determine_scope)
def docker_container():
    yield spawn_container()

 

参考文档:pytest.pdf

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值