zisred
(叶开)
1
问题描述:
UI测试框架的实际应用中,发现一个问题,无法解决
首先,有两个测试模块
- 注册流程
- 房间行为
注册流程 的验证,大部分用例无须登录,即时登录我也可以按照“输入账号密码 - 登录成功 - 进入个人主页 - 点击退出”的流程回到登录页
但测试 房间行为 时,要一直保持登录状态,这点让我有点犯难,不知道该如何去设计
解决办法:
-
我可以在 房间行为 的 class 前 setup 一个登录流程,这样整个 class 一起跑,应该没问题。但这样单独执行下面的用例可能会碰到未登录的情况,会报错
-
每个用例走一遍登录流程。这种办法太耗费时间
想请问一下老师们有没有更好的解决思路?
_AD
(霍格沃兹_AD)
2
没太理解,问题点在哪里。能描述清楚一点吗,最好有个时序图
zisred
(叶开)
3
AD老师 不好意思,我没法用时序图表达出我的意思。
简单来说,我要测试的App是需要 登录 才能进入 主页 的。
如果我要测试的是 主页 的功能,如何设计用例才能保证我如果碰到“未登录”的状态下,去执行登录流程
xiaoxi
(测开17期学委-晓兮)
4
在contest.py那里设置个fixture函数,别设置成自动调用,在需要的用例里面去引用就行啦,这样子没引用到的就不执行登录操作
我是直接写了个cookie复用(登录的方法)初始化po的时候,加个开关控制是否登录。
跟fixture一个道理应该。
hua123
(测开19期学委-花小田)
6
测试 房间行为时,需要使用fixture 为setupclass 级别,或者自己定义,里面就是登录的功能,
zisred
(叶开)
7
小田老师,请问具体代码怎么写好?
我的思路是,设置一个 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()