【pytest官方文档】解读fixtures - 5. fixtures的autouse

简介: 【pytest官方文档】解读fixtures - 5. fixtures的autouse

现在我们已经知道了,fixtures是一个非常强大的功能。


那么有的时候,我们可能会写一个fixture,而这个fixture所有的测试函数都会用到它。那这个时候,就可以用


autouse自动让所有的测试函数都请求它,不需要在每个测试函数里显示的请求一遍。

具体用法就是,将autouse=True传递给fixture的装饰器即可。


import pytest
@pytest.fixture
def first_entry():
    return "a"
@pytest.fixture
def order(first_entry):
    return []
@pytest.fixture(autouse=True)
def append_first(order, first_entry):
    return order.append(first_entry)
def test_string_only(order, first_entry):
    assert order == [first_entry]
def test_string_and_int(order, first_entry):
    order.append(2)
    assert order == [first_entry, 2]


先来看第一个测试函数test_string_only(order, first_entry)的执行情况:


  1. 虽然在测试函数里请求了2个fixture函数,但是order拿到的并不是[]first_entry拿到的也并不是"a"
  2. 因为存在了一个autouse=True的fixture函数,所以append_first先会被调用执行。
  3. 在执行append_first过程中,又分别请求了order、 first_entry这2和fixture函数。
  4. 接着,append_first对分别拿到的[]"a"进行append处理,最终返回了["a"]


所以,断言assert order == [first_entry]是成功的。


同理,第二个测试函数test_string_and_int(order, first_entry)的执行过程亦是如此。

相关文章
|
6月前
|
测试技术 Python
pytest中的fixture和conftest.py
pytest中的fixture和conftest.py
|
JSON 测试技术 数据格式
19-pytest-allure-pytest环境搭建
19-pytest-allure-pytest环境搭建
|
测试技术
pytest conftest.py和fixture的配合使用
pytest conftest.py和fixture的配合使用
|
测试技术
pytest学习和使用9-fixture中conftest.py如何使用?
pytest学习和使用9-fixture中conftest.py如何使用?
131 0
pytest学习和使用9-fixture中conftest.py如何使用?
|
测试技术 API
【pytest官方文档】解读fixtures - 9. 什么样的fixture结构,用起来最可靠?
【pytest官方文档】解读fixtures - 9. 什么样的fixture结构,用起来最可靠?
【pytest官方文档】解读fixtures - 9. 什么样的fixture结构,用起来最可靠?
|
存储 测试技术 Python
Pytest fixture及conftest详解
fixture关键特性;fixture定义;fixture用法;fixture四种作用域;fixture相关参数;内置fixture示例;
Pytest fixture及conftest详解
|
测试技术
pytest(12)-Allure常用特性allure.attach、allure.step、fixture、environment、categories
上一篇文章pytest Allure生成测试报告我们学习了Allure中的一些特性,接下来继续学习其他常用的特性。
pytest(12)-Allure常用特性allure.attach、allure.step、fixture、environment、categories