UI自动化框架 设计,请教老师们如何针对不同用例去设置测试环境

问题描述:

UI测试框架的实际应用中,发现一个问题,无法解决

首先,有两个测试模块

  1. 注册流程
  2. 房间行为

注册流程 的验证,大部分用例无须登录,即时登录我也可以按照“输入账号密码 - 登录成功 - 进入个人主页 - 点击退出”的流程回到登录页

但测试 房间行为 时,要一直保持登录状态,这点让我有点犯难,不知道该如何去设计

解决办法:

  1. 我可以在 房间行为 的 class 前 setup 一个登录流程,这样整个 class 一起跑,应该没问题。但这样单独执行下面的用例可能会碰到未登录的情况,会报错

  2. 每个用例走一遍登录流程。这种办法太耗费时间

想请问一下老师们有没有更好的解决思路?

没太理解,问题点在哪里。能描述清楚一点吗,最好有个时序图

AD老师 不好意思,我没法用时序图表达出我的意思。

简单来说,我要测试的App是需要 登录 才能进入 主页 的。

如果我要测试的是 主页 的功能,如何设计用例才能保证我如果碰到“未登录”的状态下,去执行登录流程

在contest.py那里设置个fixture函数,别设置成自动调用,在需要的用例里面去引用就行啦,这样子没引用到的就不执行登录操作

我是直接写了个cookie复用(登录的方法)初始化po的时候,加个开关控制是否登录。
跟fixture一个道理应该。

测试 房间行为时,需要使用fixture 为setupclass 级别,或者自己定义,里面就是登录的功能,

小田老师,请问具体代码怎么写好?

我的思路是,设置一个 login fixture,在用例中传入,这样根本没法传入 fixture,报错

麻烦你指导下如何修改

conftest.py

class AppOperate(BasePage):
    app = None

    @pytest.fixture(scope="class")
    def login(self):
        self.app = App()
        user_id = "1110849"
        self.app.start().goto_login().edit_player_power(user_id).login_button()
        return MainPage(self.driver)

test_gift.py

import allure

from Oxygen_UI.testcase.test_base import TestBase

class TestGift(TestBase):
    def test_get_coin(self, login):
        self.app.goto_main().goto_room().goto_gift().get_coin()