APP自動(dòng)化Android之屬性獲取與斷言

> 本文節(jié)選自霍格沃茲測(cè)試學(xué)院內(nèi)部教材


斷言是 UI 自動(dòng)化測(cè)試的三要素之一,是 UI

自動(dòng)化不可或缺的部分砂缩。我們使用定位器定位到元素后泵额,通過(guò)腳本進(jìn)行業(yè)務(wù)操作的交互迫悠,想要驗(yàn)證交互過(guò)程中的正確性就需要用到斷言。



常規(guī)的UI自動(dòng)化斷言??






分析正確的輸出結(jié)果于购,常規(guī)的斷言一般包含以下的幾個(gè)情形:


? * 比較大小


? * 包含或者不包含


? * 驗(yàn)證布爾值




示例代碼:




? *? ?*? ?*? ?*? ?*? ?*? ?*? ?*? ?*? ?*? ?*? ?*? ?*? ?*? ?*? ?*? ?*? ?*?




? ? #比較大小price = driver.find_element(? ? By.XPATH,'//*[contains(@resource-id="current_price")]').textassert float(price) >=170??

? ? #包含驗(yàn)證name = driver.find_element(? ? By.XPATH,'//*[contains(@resource-id="stockName")]').textassert "BABA" in name??

? ? #布爾值驗(yàn)證def check():? name = driver.find_elements(By.XPATH,'//*[contains(@resource-id="stockName")]')? ? if len(name)!=0:? ? ? ? return True? ? else:? ? ? ? return Falseassert check()






上面的示例可以看出袍睡,Python 的 assert 是用來(lái)判斷一個(gè)條件是否為真,如果它為真价涝,就繼續(xù)執(zhí)行女蜈,如果為假,則拋出 AssertError

并且包含錯(cuò)誤信息色瘩。斷言可以在條件不滿(mǎn)足程序運(yùn)行的情況下直接返回錯(cuò)誤。



Hamcrest斷言??




###??




###??


Hamcrest

是一個(gè)以測(cè)試為目的逸寓,能組合成靈活表達(dá)式的匹配器類(lèi)庫(kù)居兆,用于編寫(xiě)斷言的框架,使用這個(gè)框架編寫(xiě)斷言竹伸,可以提高可讀性以及開(kāi)發(fā)測(cè)試的效率泥栖。Hamcrest

提供了大量被稱(chēng)為“匹配器”的方法。每個(gè)匹配器都設(shè)計(jì)用于執(zhí)行特定的比較操作勋篓。Hamcrest 的可擴(kuò)展性強(qiáng)吧享,允許你創(chuàng)建自定義的匹配器,并支持多種語(yǔ)言譬嚣。




Hamcrest使用方法??




###??




###??


?**安裝**??




? *?




? ? ?pip install pyhamcrest



?**導(dǎo)入**




? *?




? ? ?from hamcrest import *




Hamcrest 提供了一個(gè)全新的斷言語(yǔ)法(assert_that)钢颂,可以只使用 assert_that 一個(gè)斷言語(yǔ)句,結(jié)合 Hamcrest

提供的匹配符拜银,就可以完成各種斷言場(chǎng)景殊鞭。




?**常用方法 API**


?**??

**


1.比較兩個(gè)字符串可以使用“equal_to”方法,示例代碼如下:




? *?




? ? ?assert_that("this is a string",equal_to("this is a string"))




2.數(shù)值匹配尼桶,比較兩個(gè)值是否接近操灿,可以使用“close_to”方法,用法:


`??

`


? *?




? ? assert_that(8,close_to(10,2))




解釋?zhuān)簲嘌?8 接近于 (8 ~ 12)這個(gè)范圍泵督。




3.包含某個(gè)字符趾盐,使用“contains_string”方法,示例代碼如下:




? *?




? ? assert_that('abc',contains_string('d'))




案例??






使用“雪球”應(yīng)用小腊,打開(kāi)雪球

APP救鲤,點(diǎn)擊頁(yè)面上的搜索輸入框輸入“alibaba”,然后在搜索聯(lián)想出來(lái)的列表里面點(diǎn)擊“阿里巴巴”溢豆,選擇股票分類(lèi)蜒简,獲取股票類(lèi)型為“09988”的股票價(jià)格,最后驗(yàn)證價(jià)格在預(yù)期價(jià)格的

10% 范圍浮動(dòng)漩仙。示例代碼片段如下:




? *? ?*? ?*? ?*? ?*? ?*? ?*? ?*? ?*? ?*? ?*? ?*? ?*? ?*? ?*? ?*? ?*? ?*? ?*? ?*? ?*? ?*? ?*? ?*? ?*? ?*? ?*? ?*? ?*? ?*? ?*?




? ? from hamcrest import assert_that, close_to??

? ? def test_wait(self):? ? # 點(diǎn)擊搜索輸入框? ? self.driver.find_element_by_id(? ? ? ? "com.xueqiu.android:id/tv_search").click()? ? # 輸入 “alibaba”? ? self.driver.find_element_by_id(? ? ? ? "com.xueqiu.android:id/search_input_text"? ? ? ? ).send_keys("alibaba")? ? # 點(diǎn)擊“阿里巴巴”? ? self.driver.find_element_by_xpath("http://*[@text='阿里巴巴']").click()? ? # 點(diǎn)擊“股票”? ? self.driver.find_element_by_xpath(? ? ? ? "http://*[contains(@resource-id,'title_container')]//*[@text='股票']"? ? ? ? ).click()? ? # 獲取股票價(jià)格? ? locator = (MobileBy.XPATH,? ? "http://*[@text='09988']/../../..\? ? //*[@resource-id='com.xueqiu.android:id/current_price'")??

? ? ? ? ele = WebDriverWait(self.driver,10)\? ? .until(expected_conditions.element_to_be_clickable(locator))??

? ? ? ? print(ele.text)? ? current_price = float(ele.text)? ? expect_price = 170??

? ? ? ? # 使用 hamcrest 斷言來(lái)判斷股票價(jià)格浮動(dòng)在 10% 范圍內(nèi)? ? assert_that(current_price,? ? close_to(expect_price, expect_price*0.1))




上面的示例中搓茬,assert_that 是用于生成測(cè)試斷言的樣式化語(yǔ)句犹赖,比較兩個(gè)值(current_price 與

expect_price)是否接近,斷定實(shí)際值 current_price 在`expect_price-expect_price*0.1`

與`expect_price+expect_price*0.1` 范圍區(qū)間浮動(dòng)卷仑。




作為UI自動(dòng)化測(cè)試三要素之一的斷言峻村,大家學(xué)會(huì)了么?下一篇我們來(lái)分享參數(shù)化用例锡凝,有興趣的小伙伴可以關(guān)注一下哦粘昨!




?** _?

來(lái)霍格沃茲測(cè)試開(kāi)發(fā)學(xué)社,學(xué)習(xí)更多軟件測(cè)試與測(cè)試開(kāi)發(fā)的進(jìn)階技術(shù)窜锯,知識(shí)點(diǎn)涵蓋web自動(dòng)化測(cè)試 app自動(dòng)化測(cè)試张肾、接口自動(dòng)化測(cè)試、測(cè)試框架锚扎、性能測(cè)試吞瞪、安全測(cè)試、持續(xù)集成/持續(xù)交付/DevOps驾孔,測(cè)試左移芍秆、測(cè)試右移、精準(zhǔn)測(cè)試翠勉、測(cè)試平臺(tái)開(kāi)發(fā)妖啥、測(cè)試管理等內(nèi)容,課程技術(shù)涵蓋bash对碌、pytest荆虱、junit、selenium俭缓、appium克伊、postman、requests华坦、httprunner愿吹、jmeter、jenkins惜姐、docker犁跪、k8s、elk歹袁、sonarqube坷衍、jacoco、jvm-sandbox等相關(guān)技術(shù)条舔,全面提升測(cè)試開(kāi)發(fā)工程師的技術(shù)實(shí)力

QQ交流群:484590337

公眾號(hào) TestingStudio

視頻資料領(lǐng)确愣:https://qrcode.testing-studio.com/f?from=jianshu&url=https://ceshiren.com/t/topic/15844

點(diǎn)擊查看更多信息

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市孟抗,隨后出現(xiàn)的幾起案子迁杨,更是在濱河造成了極大的恐慌钻心,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,826評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件铅协,死亡現(xiàn)場(chǎng)離奇詭異捷沸,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)狐史,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)痒给,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人骏全,你說(shuō)我怎么就攤上這事苍柏。” “怎么了姜贡?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,234評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵序仙,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我鲁豪,道長(zhǎng),這世上最難降的妖魔是什么律秃? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,562評(píng)論 1 293
  • 正文 為了忘掉前任爬橡,我火速辦了婚禮,結(jié)果婚禮上棒动,老公的妹妹穿的比我還像新娘糙申。我一直安慰自己,他們只是感情好船惨,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,611評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布柜裸。 她就那樣靜靜地躺著,像睡著了一般粱锐。 火紅的嫁衣襯著肌膚如雪疙挺。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,482評(píng)論 1 302
  • 那天怜浅,我揣著相機(jī)與錄音铐然,去河邊找鬼。 笑死恶座,一個(gè)胖子當(dāng)著我的面吹牛搀暑,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播跨琳,決...
    沈念sama閱讀 40,271評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼自点,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了脉让?” 一聲冷哼從身側(cè)響起桂敛,我...
    開(kāi)封第一講書(shū)人閱讀 39,166評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤功炮,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后埠啃,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體死宣,經(jīng)...
    沈念sama閱讀 45,608評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,814評(píng)論 3 336
  • 正文 我和宋清朗相戀三年碴开,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了毅该。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,926評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡潦牛,死狀恐怖眶掌,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情巴碗,我是刑警寧澤朴爬,帶...
    沈念sama閱讀 35,644評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站橡淆,受9級(jí)特大地震影響召噩,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜逸爵,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,249評(píng)論 3 329
  • 文/蒙蒙 一具滴、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧师倔,春花似錦构韵、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,866評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至瓷胧,卻和暖如春显拳,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背抖单。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,991評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工萎攒, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人矛绘。 一個(gè)月前我還...
    沈念sama閱讀 48,063評(píng)論 3 370
  • 正文 我出身青樓耍休,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親货矮。 傳聞我的和親對(duì)象是個(gè)殘疾皇子羊精,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,871評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容