Pytest-fixture

发布时间:2024年01月05日

1、pytest-fixture

fixture功能:其实就是自定义前面的前置和后置操作

全局设置

conftest.py可以实现配置里面的数据共享,不需要手动的去导入这个配置里面的配置。

Scope=”module”可以实现多个py文件的前置和后置共享,但是一个py文件只会调用一次。

Scope=“session”以实现多个py跨文件使用一个session来完成多个用例

?

传入多个前置条件:在参数里面写入多个fixtrue前置即可

?

后置功能:

在@pytest.fixture函数里加上yield,yield下面的就是后置处理的内容

前置加后置结合功能:

fixture 函数根据关键字 yield 作为前置和后置的分割线,并且 yield 也可以接收返回值,返回元祖,作用相当于return

import pytest

  1. import?pytest??
  2. ??
  3. #?@pytest.fixture(scope="function")??#???
  4. @pytest.fixture()??
  5. def?init_demo():??
  6. ????print("这是测试用例的前置")??
  7. ????a?=?1??
  8. ????yield?a??#?分割线yield?+?返回?这样一来就可以把init_demoreturn确定?
  9. ????print("这是测试用例的后置")??#yield下一行的是后置

全局测试用例自动使用fixture:

用 autouse 调用 fixture

在定义 fixture 时,有一个参数 autouse,默认设置的为 False

当默认为 False,就可以选择用上面两种方式来使用 fixture

当设置为 Ture 时,在一个session内的所有的 test 都会自动调用这个fixture,建议该开关谨慎使用

  1. import pytest
  2. @pytest.fixture(autouse=Ture)
  3. def init_demo():
  4. ????print("这是测试用例的前置")
  5. ????yield
  6. ????print("这是测试用例的后置")
  7. import?pytest
  8. def?test_add_02():
  9. ????b = 1 + 2
  10. ????assert?3 == b

fixture的继承(前置的前置,后置的后置)

  • 作用域(scope字):function/函数测试用例)、class/类级(测试类)、module/块级测试—py文件)、session/话级(整个测试执行会
  • 形象比
  • 继承条件:作用域由里向外继承作用域,也可以继承同级的作用
  • 执行顺序:前置由外层到内层执行,后置由内层到外层执行,先执行最里层的作用域,在执行它的上一层作用域,直到再向外找不到作用域为
  • 继承方法:直接将继承的?fixture 的函数名称作入参入即可
  • 返回承父的同,也承了父的返回
  • import?pytest??
  • ?
  • ?
  • @pytest.fixture(scope='session')??
  • def?init_session():??
  • ????print("这是测试会话的前置")??
  • ????yield??
  • ????print("这是测试会话的后置")??
  • ?
  • ?
  • @pytest.fixture(scope='module')??
  • def?init_module(init_session):??
  • ????print("这是测试模块的前置")??
  • ????yield??
  • ????print("这是测试模块的后置")??
  • ?
  • ?
  • @pytest.fixture(scope='class')??
  • def?init_class(init_module):??
  • ????print("这是测试类的前置")??
  • ????yield??
  • ????print("这是测试类的后置")??
  • ?
  • ?
  • @pytest.fixture??#?相当于@pytest.fixture(scope='function')??
  • def?init_function(init_class):??
  • ????print("这是测试用例的前置")??
  • ????yield??
  • ????print("这是测试用例的后置")?

fixture的层级作用域:

使用 fixture 的顺序-- 子目录当中,也可以拥有自己的 conftest

先用自己的,再去找同级目录下的 conftest.py 再去找上一级目录 下的 conftest.py

2、mark标记

2.1设置skip装饰器可以执行用例的时候自动跳过标记用例

2.2使用mark标记用例分类,如果不想执行该标记的用例

如果不想执行标记webtest的用例,那就用"not webtest“

$ pytest -v ?-m "not webtest"

文章来源:https://blog.csdn.net/weixin_39366308/article/details/135403040
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。