【Python_pytest】pytest_dependency 依赖关系


pytest_dependency 依赖关系

  eg:用例2 依赖于 用例1,当用例1 执行结果为 failed时,跳过用例2

方法一:类::方法

# coding:utf-8
import pytest
import pytest_check as pycheck

class TestDebug:

    @pytest.mark.dependency()
    def test_debug_01(self):
        """

        :return:
        """
        t_1 = pycheck.equal(1, 1, "失败, 跳过test_debug_02")
        if t_1:
            print("01用例通过")

    @pytest.mark.dependency(depends=["TestDebug::test_debug_01"])
    def test_debug_02(self):
        t_2 = pycheck.equal(1, 1, "01用例执行成功,02 用例失败")
        if t_2:
            print("02用例通过")


if __name__ == "__main__":
    print("")
    pytest.main(["test_debug.py::TestDebug",   # 测试用例
                 "-v",  # -v 显示详细信息, -q 不输出环境信息, -s 显示程序中的打印和日志
                 "--html=../report/report.html",   # 生成测试报告
                 "--self-contained-html",  # 把css样式合并到html里
                 "--color=yes",  # pytest 写入输出颜色
                 ])

执行结果:

01 成功  

01 失败  

 方法二:name=“xxx”

# coding:utf-8
import pytest
import pytest_check as pycheck

class TestDebug:

    @pytest.mark.dependency(name="test03")
    def test_debug_03(self):
        t_3 = pycheck.equal(1, 2, "失败, 跳过test_debug_04")
        if t_3:
            print("03用例通过")

    @pytest.mark.dependency(depends=["test03"])
    def test_debug_04(self):
        t_4 = pycheck.equal(1, 2, "03用例执行成功,04用例失败")
        if t_4:
            print("04用例通过")


if __name__ == "__main__":
    print("")
    pytest.main(["test_debug.py::TestDebug",   # 测试用例
                 "-v",  # -v 显示详细信息, -q 不输出环境信息, -s 显示程序中的打印和日志
                 "--html=../report/report.html",   # 生成测试报告
                 "--self-contained-html",  # 把css样式合并到html里
                 "--color=yes",  # pytest 写入输出颜色
                 ])

 执行结果:

03成功  

03失败  

当前文件存在同名方法,作用与当前类

# coding:utf-8
import pytest
import pytest_check as pycheck

class TestDebug1:

    @pytest.mark.dependency()
    def test_debug_01(self):
        """

        :return:
        """
        t_1 = pycheck.equal(1, 1, "失败, 跳过test_debug_02")
        if t_1:
            print("01用例通过")

class TestDebug:

    @pytest.mark.dependency()
    def test_debug_01(self):
        """

        :return:
        """
        t_1 = pycheck.equal(1, 2, "失败, 跳过test_debug_02")
        if t_1:
            print("01用例通过")

    @pytest.mark.dependency(depends=["TestDebug::test_debug_01"])
    def test_debug_02(self):
        t_2 = pycheck.equal(1, 1, "01用例执行成功,02 用例失败")
        if t_2:
            print("02用例通过")

    # scope可接受四种参数定义的类型
      # scope='session' 作用于全局,可跨目录调用
      # scope='package' 作用于当前目录同级的依赖函数
      # scope='class' 作用于所属的类,外部类不会被关联
      # scope='module' 默认,作用于当前py文件
    @pytest.mark.dependency(depends=["test_debug_01"], scope='class')
    def test_debug_05(self):
        t_5 = pycheck.equal(1, 1, "03用例执行成功,05用例失败")
        if t_5:
            print("05用例通过")



if __name__ == "__main__":
    print("")
    pytest.main(["test_debug.py::TestDebug",   # 测试用例
                 "-v",  # -v 显示详细信息, -q 不输出环境信息, -s 显示程序中的打印和日志
                 "--html=../report/report.html",   # 生成测试报告
                 "--self-contained-html",  # 把css样式合并到html里
                 "--color=yes",  # pytest 写入输出颜色
                 ])

执行结果:

01 失败:  

01 成功: