03_pytest_前后置

1、前后置之夹具(setup ——teardown)

def setup_class(self):   //在每一个类执行之前的初始化工作 :比如创建日志,创建数据库对象
def setup(self):       // 在执行每个测试用例之前的初始化的代码: 打开浏览器 加载网页
def test_01_baili(self):
def teardown(self):   //在执行测试用例之后的测试的收尾工作
def teardown_class(self)  //在每个类执行之后的扫尾工作 ,比如销毁日志对象 ,销毁数据库链接

import pytest

# 类夹具要写在类里面, 第一次写在外面不会被执行,这个是错误写法
# def setup_class(self):
#     print("这是一个类夹具,在类之前执行")

class Testapi:

    def setup_class(self):
         print("这是一个类夹具,在类之前执行")

    def teardown_class(self):
        print("这是一个类夹具,在类之后执行")

    # 无论夹具定义在这个用例的哪一个类,或者这个类的任何一个地方,都会在每个用例之前执行一次
    def setup(self):
        print("这是一个夹具,在用例之前执行")

    def teardown(self):
        print("这是一个夹具,在用例之后执行")

    def test_01_api1(self):
        print("第一个用例")

    def test_02_api2(self):
        print("第二个用例")

    def test_03_api33(self):
        print("第三个用例")


class Testapi2:

    def test_01_api11(self):
        print("第一个用例")

    def test_02_api22(self):
        print("第二个用例")

    def test_03_api33(self):
        print("第三个用例")

打印结果:

这是一个夹具,在用例之前执行
第一个用例
PASSED这是一个夹具,在用例之后执行

vip_pytest_one/testcases/user_manager/test_api.py::Testapi::test_02_api2 这是一个夹具,在用例之前执行
第二个用例
PASSED这是一个夹具,在用例之后执行

vip_pytest_one/testcases/user_manager/test_api.py::Testapi::test_03_api33 这是一个夹具,在用例之前执行
第三个用例
PASSED这是一个夹具,在用例之后执行
这是一个类夹具,在类之后执行

vip_pytest_one/testcases/user_manager/test_api.py::Testapi2::test_01_api11 第一个用例
PASSED
vip_pytest_one/testcases/user_manager/test_api.py::Testapi2::test_02_api22 第二个用例
PASSED
vip_pytest_one/testcases/user_manager/test_api.py::Testapi2::test_03_api33 第三个用例
PASSED

2、前后置之固件(更灵活的实现前后置的方法: 使用@pytest.fixture()装饰器实现部分用例的前后置, 也可以实现全部用例的前后置)

import pytest


@pytest.fixture(scope="function")
def exe_sql():
    print("这是一个固件前置执行,需要执行sql")
    #通过yiled唤醒后置处理
    yield "success" 
    print("后置执行")


#类调用这个固件
@pytest.mark.usefixtures("exe_sql")
class Testapi:

    def test_01_api1(self):
        print("第一个用例")
    
    #函数哟用例中调用这个固件 
    def test_02_api2(self, exe_sql):
        # 接受yield的返回值
        print("第二个用例,%s" % exe_sql)

    def test_03_api33(self):
        print("第三个用例")

执行结果如下 因为被类调用了固件,所以类里面每个用例都会执行,

否则只会执行用例2的前后置

vip_pytest_one/testcases/user_manager/test_api.py::Testapi::test_01_api1 这是一个固件前置执行,需要执行sql
第一个用例
PASSED后置执行

vip_pytest_one/testcases/user_manager/test_api.py::Testapi::test_02_api2 这是一个固件前置执行,需要执行sql
第二个用例,success
PASSED后置执行

vip_pytest_one/testcases/user_manager/test_api.py::Testapi::test_03_api33 这是一个固件前置执行,需要执行sql
第三个用例
PASSED后置执行

你可能感兴趣的:(大数据)