ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Pytest--fixture详解

2021-09-07 11:35:33  阅读:172  来源: 互联网

标签:False name -- fixture pytest autouse --- Pytest


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

标签:False,name,--,fixture,pytest,autouse,---,Pytest
来源: https://www.cnblogs.com/Bruin/p/15204768.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有