新手区 [已解決]關於測試後回歸初始狀態

Lee · 2015年12月24日 · 最后由 Yorn 回复于 2015年12月27日 · 1946 次阅读

先簡短說明一下情況
我做的是黑盒測試
測試對象是Android應用
使用的是Appium java-client
寫的是Junit4
測試經歷3個月,Appium使用歷1個月(之前是手動)
代碼的基本架構github的抄襲
所以看到有人講了甚麼
體驗到必要這麼做的場景,就自己修正

回到主題
一般來說,一個測試檔案部會只寫入一項測試
所以每個測試結束都該回到初始狀態,才繼續下一項測試
但我的問題也出在這裡,我嘗試過closeApp,確實是將應用關閉了,但總有種推到背面執行的感覺
我應該針對每次測試去寫回到初始狀態的命令嗎?


算是解決吧
弄了一下發現公司 Android 跟 iOS 的登入後畫面定義在不同畫面上
為求統一,乖乖自己寫回歸的命令

@darker50
感謝指導

共收到 12 条回复 时间 点赞
driver.quit();

怎么是繁体字? 你是台湾人吗?

先 closeApp() 后在 resetApp() 第一次初始化就行。

Lee #4 · 2015年12月24日 Author

@sanlengjingvv
quit 結束掉整個模擬情況
並不會結束應用

@lihuazhang
是,我是
很抱歉,我不會打簡體字
不可以的話,我會去找簡繁轉換

@jiazurongyu
感謝。
他好像會清除掉的好像不止暫存的樣子,被整個刷到新安裝的狀態,包含帳號登入
我家的軟體沒法子是用這招,要不然需要寫更多東西
阿...是我表達錯意思。對不起
我想做的是回到應用最初的畫面,所以能夠關掉應用就是最好的方向
不過能釐清一個概念,受益良多。

#4 楼 @wkx101 好的 没关系。那就用繁体字吧。

#4 楼 @wkx101 试试看,tearDown 方法里面调用 pm clear PACKAGE

曾经在台企呆过近 2 年,现在看到繁体突然好亲切。。。
每个案例之前做 dr 的初始化,最后用 dr.close_app() 和 dr.quit() 应该就可以了吧。

根据不同情况决定吧,用例间也是可以有连续性的

#4 楼 @wkx101

driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
driver.quit();
driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
driver.quit();

第二次 new dirver 的时候没有从最初界面打开 app 吗

看下这个方法driver.startActivity();

Lee #10 · 2015年12月25日 Author

@lihuazhang
了解,來去嘗試看看
精華區的那邊只看到一半,畢竟是上班時間,不敢全拿來念書

@among29

有的情況只用 closeapp 跟 quit 之後
跑下一個測試的時候,會因為沒有完全關閉應用,導致要抓取的物件不存在,引發錯誤

@huanzhijin
連續情況阿
沒考慮好,現在想想確實有幾個場景需要這樣寫
感謝指導

@sanlengjingvv

cap.setCapability(MobileCapabilityType.APP_PACKAGE, "");
cap.setCapability(MobileCapabilityType.APP_ACTIVITY, "");

我一直以為寫上這兩個,就已經是指定開啟某個頁面了
然後startActivity則是在用例中切換某個指定頁面的時候利用
感謝

Junit 的在@After方法中加一些处理咯,正常的 closeApp()、resetApp(),这两个方法自己实验的结果都是 home 后台,但官方文档说的一个关闭,一个重启(原因再查)。后来自己使用的解决方式就是使用 adb 命令咯,基本能满足所有 app 的各种清理工作;还有一种方式就是各种使用 back 键(这个看 app 情况),在什么状态下可以使用 back 键恢复初始状态,关于是否写

我應該針對每次測試去寫回到初始狀態的命令嗎?

这个肯定要的,只是一种是使用 appium 自己封装的方法、第二种就是正常的使用自己封装的方法。

以上是个人的基本看法,有问题、建议的欢迎提出

是啊,adb shell am force-stop <PACKAGE> 简单直接暴力

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册