微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Pytest--fixture详解

fixture

  • fixture介绍
    1.命名方式灵活,不局限于setup和teardown这几个命名
    2.conftest.py配置里可以实现数据共享

  • fixture源码详解
    @pytest.fixture(scope="function", params=None, autouse=False, ids=None, name=None)
    参数说明:
    scope:标记方法的作用域(functipn,class,module,session上篇文章有介绍)
    params:一个可选的参数列表,它将导致多个参数调用fixture功能和所有测试使用它
    autouse:认:False,需要用例手动调用该fixture;如果是True,所有作用域内的测试用例都会自动调用该fixture
    ids:每个字符串id的列表,每个字符串对应于params这样他们就是测试ID的一部分。如果没有提供ID它们将从params自动生成
    name:fixture的名称。这认为装饰函数名称。如果fixture在定义它的统一模块中使用,夹具的功能名称将被请求夹具的功能arg遮蔽,解决这个问题的一种方法时将装饰函数命令"fixture_"然后使用"@pytest.fixture(name='')"

  • fixture具体使用
    1.将fixture作为测试函数的输入参数

#conftest.py
import pytest
@pytest.fixture(scope='function', autouse=False)
def open_server():
    a = 1
    print('---开启服务---')
    return a

@pytest.fixture(scope='function', autouse=False)
def close_server():
    print('---关闭服务---')

#test_case.py
    def test_run(self, open_server):
        print('---开始执行用例---')
        assert open_server == 1

#结果
test_001_case.py::TestCase001::test_run demo
---开启服务---
PASSED                           [100%]---开始执行用例---

2.assert在fixture里,断言失败就是error

@pytest.fixture()
def user():
    print("获取用户名")
    name = "xoxo"
    assert name == "oxox"  # fixture失败就是error
    return name

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐