1. 程式人生 > 其它 >在Java中呼叫Python

在Java中呼叫Python

本文節選自霍格沃茲測試學院內部教材

斷言是 UI 自動化測試的三要素之一,是 UI
自動化不可或缺的部分。我們使用定位器定位到元素後,通過指令碼進行業務操作的互動,想要驗證互動過程中的正確性就需要用到斷言。

常規的UI自動化斷言

分析正確的輸出結果,常規的斷言一般包含以下的幾個情形:

  • 比較大小

  • 包含或者不包含

  • 驗證布林值

示例程式碼:


#比較大小price = driver.find_element(    By.XPATH,'//*[contains(@resource-id="current_price")]').textassert float(price) >=170  
#包含驗證name = driver.find_element(    By.XPATH,'//*[contains(@resource-id="stockName")]').textassert "BABA" in name  
#布林值驗證def check():  name = driver.find_elements(By.XPATH,'//*[contains(@resource-id="stockName")]')    if len(name)!=0:        return True    else:        return Falseassert check()

上面的示例可以看出,Python 的 assert 是用來判斷一個條件是否為真,如果它為真,就繼續執行,如果為假,則丟擲 AssertError
並且包含錯誤資訊。斷言可以在條件不滿足程式執行的情況下直接返回錯誤。

Hamcrest斷言

Hamcrest
是一個以測試為目的,能組合成靈活表示式的匹配器類庫,用於編寫斷言的框架,使用這個框架編寫斷言,可以提高可讀性以及開發測試的效率。Hamcrest
提供了大量被稱為“匹配器”的方法。每個匹配器都設計用於執行特定的比較操作。Hamcrest 的可擴充套件性強,允許你建立自定義的匹配器,並支援多種語言。

Hamcrest使用方法

安裝

 pip install pyhamcrest

匯入

 from hamcrest import *

Hamcrest 提供了一個全新的斷言語法(assert_that),可以只使用 assert_that 一個斷言語句,結合 Hamcrest
提供的匹配符,就可以完成各種斷言場景。

常用方法 API

**
**

1.比較兩個字串可以使用“equal_to”方法,示例程式碼如下:

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

2.數值匹配,比較兩個值是否接近,可以使用“close_to”方法,用法:

assert_that(8,close_to(10,2))

解釋:斷言 8 接近於 (8 ~ 12)這個範圍。

3.包含某個字元,使用“contains_string”方法,示例程式碼如下:

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

案例

使用“雪球”應用,開啟雪球
APP,點選頁面上的搜尋輸入框輸入“alibaba”,然後在搜尋聯想出來的列表裡面點選“阿里巴巴”,選擇股票分類,獲取股票型別為“09988”的股票價格,最後驗證價格在預期價格的
10% 範圍浮動。示例程式碼片段如下:


from hamcrest import assert_that, close_to  
def test_wait(self):    # 點選搜尋輸入框    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")    # 點選“阿里巴巴”    self.driver.find_element_by_xpath("//*[@text='阿里巴巴']").click()    # 點選“股票”    self.driver.find_element_by_xpath(        "//*[contains(@resource-id,'title_container')]//*[@text='股票']"        ).click()    # 獲取股票價格    locator = (MobileBy.XPATH,    "//*[@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 斷言來判斷股票價格浮動在 10% 範圍內    assert_that(current_price,    close_to(expect_price, expect_price*0.1))

上面的示例中,assert_that 是用於生成測試斷言的樣式化語句,比較兩個值(current_price 與
expect_price)是否接近,斷定實際值 current_price 在expect_price-expect_price*0.1
expect_price+expect_price*0.1 範圍區間浮動。

作為UI自動化測試三要素之一的斷言,大家學會了麼?下一篇我們來分享引數化用例,有興趣的小夥伴可以關注一下哦!

** 推薦學習**

內容全面升級,4 個月 20+ 專案實戰強化訓練,資深測試架構師、開源專案作者親授 BAT 大廠前沿最佳實踐,
帶你一站式掌握測試開發必備核心技能( 對標阿里P6+,年薪50W+ )! 直推 BAT 名企測試經理,普遍漲薪 50%+!

⬇️ 點選“閱讀原文”,提升測試核心競爭力!

閱讀原文