3.pytest执行用例时的前后置处理

pytest执行用例时的前后置处理

pytest执行用例的前后置处理

1.第一种

  • def setup(self) 每个用例之前执行
  • def teardown(self)每个用例之后执行
  • def setup_class(self) 每个类之前执行
  • def teardown_class(self) 每个类之后执行
import pytest

class TestLogin:

    def setup_class(self):
        print("每个类之前执行")

    def teardown_class(self):
        print("每个类之后执行")

    def setup(self):
        print("每个用例之前执行")

    def teardown(self):
        print("每个用例之后执行")

    def test_login(self):
        print("登录接口")

    def test_register(self):
        print("注册接口")
    	

3.pytest执行用例时的前后置处理_第1张图片

2.fixture固件,作用就是可以随心所欲的设置前后置

  • 装饰器 @pytest.fixture(scope=“”,Paramus=“”,autouse=“”,ids=“”,name=“”)
  • scope :作用域
    • function 函数: 每一个函数或方法都会调用
    • class 类: 每一个类调用一次,一个类中可以有多个方法
    • module: 每一个.py文件调用一次,该文件内又有多个function和class
    • session: 是多个文件调用一次,可以跨.py文件调用,每个.py文件就是module
  • params:数据驱动
  • autouse: 自动作用还是手动(true 或false,默认为false)
  • ids:当数据驱动更改参数 名
  • name:fixture的别名

(1)作用域为函数,使用手动调用(手动调用时,需在函数传入固件名)

  • scope="function"
  • autouse=False
    3.pytest执行用例时的前后置处理_第2张图片

(2)作用域为函数,自动调用

  • scope="function"
  • autouse=True
    3.pytest执行用例时的前后置处理_第3张图片

(3)作用域为类,自动调用

  • 类级别的fixture每个测试类只运行一次,不管测试类中有多少个类方法都可以共享这个fixture
  • scope="class"
  • autouse=True
@pytest.fixture(scope="class", autouse=True)
def some_data():
    print("fixture方式做:前置处理")
    yield
    print("fixture方式做:后置处理")


class TestLogin:

    def test_login(self):
        print("登录接口:")

    def test_register(self):
        print("注册接口")


class TestOut:

    def test_out(self):
        print("退出登录")

3.pytest执行用例时的前后置处理_第4张图片
3.pytest执行用例时的前后置处理_第5张图片

3.通过conftest.py和@pytest.fixture()结合实现全局的前置应用(比如:项目的全局登录,模块的全局处理)

  • conftest.py文件是单独存放的一个夹具的配置文件,名称是不能更改
  • 用处:可以在不同的py文件使用同一个fixture函数
  • 原则上conftest.py需要和运行的用例放到同一层,并且不需要做任何的import导入操作

(1)全局conftest.py文件

  • 创建一个全局conftest.py文件
  • scope=“class” 作用域为类
  • 执行测试用例,查看效果
    3.pytest执行用例时的前后置处理_第6张图片
    3.pytest执行用例时的前后置处理_第7张图片

(1)全局conftest.py文件与模块的conftest.py结合使用

  • 创建一个全局conftest.py文件

  • 创建一个模块的conftest.py文件

  • 执行测试用例,查看效果

  • 1.users模块中的test_user.py文件
    3.pytest执行用例时的前后置处理_第8张图片

  • 2.users模块中的conftest.py文件
    3.pytest执行用例时的前后置处理_第9张图片

  • 3.全局模块中的test_a.py文件
    3.pytest执行用例时的前后置处理_第10张图片

  • 4.全局模块中的conftest.py文件
    3.pytest执行用例时的前后置处理_第11张图片

  • 5.执行用例,结果显示:

    • users模块中的用例使用了自己模块中的conftest.py中的夹具函数做前后置处理
    • 全局模块中的用例使用了全局模块中的conftest.py中的夹具函数做前后置处理
      3.pytest执行用例时的前后置处理_第12张图片

你可能感兴趣的:(#,pytest,pytest,python,开发语言)