1. 安装pytest_ordering,通过装饰器@pytest.mark.run(order=1)来进行控制,数字越小,越前执行,

  2. 安装pytest-dependency 在对应的方法A上添加@pytest.mark.dependency()对所依赖的方法进行标记设置为被依赖方法,在依赖方法使用@pytest.mark.dependency(depends=["被依赖方法名"])引用依赖 可添加name=参数

  3.  @pytest.fixture装饰,包括session、module、class、function

  4. @pytest.mark.skip()  可以装饰方法与类,用于跳过该用例


@pytest.mark.dependency()依赖方法示例:

1.在同一个类中,再被依赖的方法上进行标记 如,被依赖方法 @pytest.mark.dependency(depends=["类名::方法名"])

    @pytest.mark.dependency()                      # 被依赖方法
    @pytest.mark.flaky(reruns=2, reruns_delay=4)  # 失败重跑该方法
    def test_login(self):
        # 打开网址
        Primary.driver.get(Config.URL)
        # 登录操作
        bool_success = LoginSystem(Primary.driver).login_system()
        if bool_success is False:
            pytest.fail("登录失败")

    @pytest.mark.dependency(depends=["Test_Login::test_login"])  # 依赖该方法
    def test_join_apply(self):
        # 进入指定应用
        Change_To_BusinessAndProject(Primary.driver).change_to_project_plug(project_name=Config.PROJECT,
                                                                            plug_name=Config.YANGCHEN_PLUGNAME,
                                                                            project_id=Config.PROJECTID)


2. 在不同模块或者类中调用,如被依赖的方法在模块A,类A中,依赖方法在B模块,类B中,可以在B类上depends=["test/模块名A.py::类名A::方法名test_A"]进行依赖,如果依赖方法A失败,B类中的方法都不会运行

 在B类中的方法进行依赖操作一致


@pytest.mark.dependency(
    depends=["test/test_Login.py::Test_Login::test_login"],
    scope='session'
)
@pytest.mark.run(order=2)
class B: