7、Pytest前后置处理函数Fixture之yiled

让我们先来看一个小栗子:

# -*- coding:utf-8 -*-
'''
@Author     : 测试工程师Jane
@FileName   : a.py
@Description:
'''
import pytest
@pytest.fixture()
def login():
    print("今天的笔记做完了吗?")
    yield
    print("今天的笔记做完啦!!!")

def test_01(login):
    print("我是用例一")
    
if __name__ == '__main__':
    pytest.main()

运行结果:
7、Pytest前后置处理函数Fixture之yiled_第1张图片
从以上运行结果我们可以看到,带有yiled的fixture函数,yiled函数语句分别在测试类前后被执行,我们来总结一下带yiled的fixture特性。

总结

  1. 一般的fixture 函数会在测试函数之前运行,但是如果 fixture 函数包含 yiled,那么会在 yiled处停止并转而运行测试函数,等测试函数执行完毕后再回到该 fixture 继续执行 yiled 后面的代码。
  2. 可以将 yiled前面的代码看作是 setup,yiled 后面的部分看作是 teardown 的过程。
  3. 无论是测试函数中发生了什么是成功还是失败或者 error 等情况,yiled 后面的代码都会被执行,yiled 中的返回数据也可以在测试函数中使用

以上内容纯属个人理解,如有不足,还请指定。转载请注明出处!

你可能感兴趣的:(pytest读书笔记,python)