學(xué)習(xí)筆記-斷言

1. 元素是否存在

find_elements

2. 元素屬性是否正確

get_attribute
assert 'xxxx' in element.get_attribute('resource-id')

3. 查找元素文本

assert float(find_element_by_id('xxxx).text)>20

4. hamcrest斷言

  • Hamcrest是用于Java的單元測試的框架,它使用matcher匹配器來進(jìn)行斷言。在Spring-boot-starter中集成了Hamcrest,無需而外引入。
    [https://github.com/hamcrest/PyHamcrest](https://github.com/hamcrest/PyHamcrest)
安裝
pip install PyHamcrest
  • IS
String str1 = "text";
String str2 = " text ";
assertThat(str1, is(equalToIgnoringWhiteSpace(str2)));
String str1 = "text";
String str2 = "text";
assertThat(str1, is(str2));
  • NOT
String str1 = "text";
String str2 = " text ";
assertThat(str1, not(equalToIgnoringWhiteSpace(str2)));

String str1 = "text";
String str2 = "text";
assertThat(str1, not(str2));
  • containsString
String str1 = "text123";
String str2 = "text";
assertThat(str1, containsString(str2));
  • 以為某個(gè)字段開頭/結(jié)尾
String str1 = "text123";
assertThat(str1, startsWith("text"));// 以某個(gè)字符開頭
assertThat(str1, endsWith("text"));// 以某個(gè)字符開頭
  • 判斷兩個(gè)對(duì)象是否為同一個(gè)實(shí)體
Cat cat=new Cat();
assertThat(cat, sameInstance(cat));
  • 類似OR的效果
String str = "calligraphy";
String start = "call";
String end = "foo";
assertThat(str, anyOf(startsWith(start), containsString(end)));
  • 類似AND的效果
String str = "calligraphy";
String start = "call";
String end = "phy";
assertThat(str, allOf(startsWith(start), endsWith(end)));
  • Number 匹配器
assertThat(1, greaterThan(0)); // 大于
assertThat(5, greaterThanOrEqualTo(5)); //大于等于
assertThat(-1, lessThan(0)); // 小于
assertThat(-1, lessThanOrEqualTo(5)); // 小于等于
  • Text 匹配器
String str = "";
assertThat(str, isEmptyString()); // 空字符串
assertThat(str, isEmptyOrNullString()); // 空字符串或者null
  • 匹配字符串相等
String str1 = "text";
String str2 = " text ";
assertThat(str1, equalToIgnoringWhiteSpace(str2)); // 忽略左右空白
assertThat(a, equalToIgnoringCase(b)); //忽略大小寫
  • Collections 匹配器

  • 檢查某個(gè)元素是否在集合中

List<String> collection = Lists.newArrayList("ab","cd","ef");
assertThat(collection, hasItem("cd"));
assertThat(collection, not(hasItem("zz")));
assertThat(collection, hasItems("cd", "ab")); // 檢查多個(gè)元素是否在集合中
  • 檢查所有元素
List<String> collection = Lists.newArrayList("ab","cd","ef");
assertThat(collection, hasItems("ab","cd","ef"));
assertThat(collection, hasItems("cd", "ab","ef")); // 錯(cuò)誤
assertThat(collection, hasItems("ab","cd")); // 錯(cuò)誤
assertThat(collection, containsInAnyOrder("cd", "ab","ef")); //正確,不區(qū)分順序
  • 集合為空檢查
List<String> collection = Lists.newArrayList("ab","cd","ef");
assertThat(collection, empty()); // false, 用于檢查集合類型
  • 數(shù)組為空檢查
String[] array = new String[] { "ab" };
assertThat(array, emptyArray()); // false

5. 總結(jié)

核心:
    anything - 總是匹配,如果你不關(guān)心測試下的對(duì)象是什么是有用的
    describedAs - 添加一個(gè)定制的失敗表述裝飾器
    is - 改進(jìn)可讀性裝飾器 - 見下 “Sugar”
邏輯:
    allOf - 如果所有匹配器都匹配才匹配,像Java里的&&
    anyOf - 如果任何匹配器匹配就匹配,像Java里的||
    not - 如果包裝的匹配器不匹配器時(shí)匹配,反之亦然
對(duì)象:
    equalTo - 測試對(duì)象相等使用Object.equals方法
    hasToString - 測試Object.toString方法
    instanceOf, isCompatibleType - 測試類型
    notNullValue, nullValue - 測試null
    sameInstance - 測試對(duì)象實(shí)例
Beans:
    hasProperty - 測試JavaBeans屬性
集合:
    array - 測試一個(gè)數(shù)組元素test an array’s elements against an array of matchers
    hasEntry, hasKey, hasValue - 測試一個(gè)Map包含一個(gè)實(shí)體,鍵或者值
    hasItem, hasItems - 測試一個(gè)集合包含一個(gè)元素
    hasItemInArray - 測試一個(gè)數(shù)組包含一個(gè)元素
數(shù)字:
    closeTo - 測試浮點(diǎn)值接近給定的值
    greaterThan, greaterThanOrEqualTo, lessThan, lessThanOrEqualTo - 測試次序
文本:
    equalToIgnoringCase - 測試字符串相等忽略大小寫
    equalToIgnoringWhiteSpace - 測試字符串忽略空白
    containsString, endsWith, startsWith - 測試字符串匹配
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 其實(shí)在之前的文章中已經(jīng)使用過 Hamcrest 匹配器框架,本篇文章將系統(tǒng)的介紹它的使用. 為什么要用Hamcre...
    changer0閱讀 4,363評(píng)論 0 4
  • 1. SAML斷言 斷言是一個(gè)包含零個(gè)或更多個(gè)由SAML權(quán)威做出的聲明的信息包。 SAML斷言通常與由 元素表示的...
    WebSSO閱讀 1,530評(píng)論 0 1
  • Google為他們寫的Espresso框架也寫單元測試/集成測試代碼,讓我們先從這些測試代碼出發(fā)看一下Espres...
    OliverGao閱讀 5,909評(píng)論 2 11
  • 前言 Hamcrest是用于Java的單元測試的框架,它使用matcher匹配器來進(jìn)行斷言。在Spring-boo...
    黑曼巴yk閱讀 8,580評(píng)論 2 6
  • junit特性 項(xiàng)目多元化,導(dǎo)致最基本的功能有時(shí)難以應(yīng)付。所以,junit自4.x發(fā)布以來,每次新版本的推出都引入...
    juconcurrent閱讀 1,689評(píng)論 0 10

友情鏈接更多精彩內(nèi)容