Angular 2 E2E測試入門

E2E測試(集成測試)是一種模擬用戶行為的測試颖杏。(以demo-app首頁為例)

E2E測試與單元測試的區(qū)別:

  • 單元測試是測試代碼的自身行為潘飘。在用戶看來好像什么也沒有做拇涤,但可以確保其方法能達(dá)到期望的目的杏慰。
  • E2E測試是一種模擬用戶行為的測試析命。使用e2e的JavaScript API代替我們?cè)跒g覽器上做的手工操作,并且我們可以看到這個(gè)過程逃默。

環(huán)境配置

  • 使用Angular-cli進(jìn)行開發(fā)鹃愤,安裝命令
    npm install -g angular-cli@latest
  • Angular2 端到端測試使用protractor工具來運(yùn)行,安裝命令
    npm install -g protractor
  • 項(xiàng)目啟動(dòng)(運(yùn)行e2e測試前必須啟動(dòng)項(xiàng)目)
    ng serve
  • 運(yùn)行測試
    protractor
    ng e2e
    yarn e2e

測試場景

  • 應(yīng)用初始化后完域,列表項(xiàng)中一共13條數(shù)據(jù)软吐。
  • 應(yīng)用初始化后,會(huì)顯示demo-module標(biāo)題吟税。
  • 點(diǎn)擊列表項(xiàng)中的任意一項(xiàng)凹耙,頁面可跳轉(zhuǎn)到對(duì)應(yīng)頁面。
  • 輸入用戶名肠仪、密碼肖抱,點(diǎn)擊登錄,返回登錄狀態(tài)异旧。

創(chuàng)建e2e測試實(shí)例

如果只有一個(gè)單一的功能意述,我們可以直接在app.e2e-spec.ts文件中添加。如果需要測試多個(gè)功能或者是更復(fù)雜的場景,我們可以在e2e文件夾中新建文件夾荤崇,并在對(duì)應(yīng)的文件夾中創(chuàng)建其測試文件拌屏。需要注意的是每個(gè)測試文件都必須以.e2e-spec.ts結(jié)尾,這樣Protractor測試工具才可以加載到术荤。

import { browser, element, by } from 'protractor'; //每個(gè)測試文件都要引入一個(gè)browswe全局變量

describe('Demo App', function () {
   beforeEach(() => {
    browser.get('/');  //導(dǎo)航到首頁
  });
});
  • 測試初始化時(shí)加載13條數(shù)據(jù)
    it('should show thirteen items when we first load the demo app', () => {
    browser.get('/');
    const items = element.all(by.css('app-root ion-content button')); //選擇多個(gè)元素
    const expectCount = 13;

    expect(items.count()).toBe(expectCount); // items.count()統(tǒng)計(jì)元素個(gè)數(shù)
  });
  • 測試應(yīng)用初始化后倚喂,會(huì)顯示demo-module標(biāo)題。
    it('should display message title demo-module', () => {
    browser.get('/');
    const title = element(by.css('app-root ion-title'));
    const titleText = title.getText(); //抓取元素文本

    expect(titleText).toEqual('demo-module');
  });
  • 測試點(diǎn)擊列表項(xiàng)中的任意一項(xiàng)瓣戚,頁面可跳轉(zhuǎn)到對(duì)應(yīng)頁面端圈。
   it('should display fifthItem details message', () => {
    browser.get('/');
    const itemNumber = 4;
    const fifthItem = element.all(by.css('app-root ion-content button')).get(itemNumber);

    fifthItem.click(); //點(diǎn)擊元素
    const outText = element(by.css('app-root sino-text-content')).getText();

    expect(outText).toContain('關(guān)于做好保密自查自評(píng)工作的通知');
  });
  • 測試登錄功能
   it('should show message of login', () => {
    browser.get('/#/login'); //使用deepLink配置路徑之后,可直接導(dǎo)航到對(duì)應(yīng)頁面
    const loginContent = element(by.css('sino-login'));
    const loginContentEl = loginContent.getText();

    expect(loginContentEl).toContain('登錄頁面');

    const userName = element(by.css('.userName')).sendKeys('王佳禾'); //傳遞對(duì)應(yīng)參數(shù)的值
    const password = element(by.css('.password')).sendKeys('1');
    const button = element(by.css('sino-login button'));

    button.click(); //點(diǎn)擊事件

    const toast = element(by.css('.toast-message'));
    const toastEl = toast.getText();

    expect(browser.ExpectedConditions).toBe('登錄成功!');

  });

參考資料

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末子库,一起剝皮案震驚了整個(gè)濱河市舱权,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌刚照,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,042評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件喧兄,死亡現(xiàn)場離奇詭異无畔,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)吠冤,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門浑彰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人拯辙,你說我怎么就攤上這事郭变。” “怎么了涯保?”我有些...
    開封第一講書人閱讀 156,674評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵诉濒,是天一觀的道長。 經(jīng)常有香客問我夕春,道長未荒,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,340評(píng)論 1 283
  • 正文 為了忘掉前任及志,我火速辦了婚禮片排,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘速侈。我一直安慰自己率寡,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,404評(píng)論 5 384
  • 文/花漫 我一把揭開白布倚搬。 她就那樣靜靜地躺著冶共,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上比默,一...
    開封第一講書人閱讀 49,749評(píng)論 1 289
  • 那天幻捏,我揣著相機(jī)與錄音,去河邊找鬼命咐。 笑死篡九,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的醋奠。 我是一名探鬼主播榛臼,決...
    沈念sama閱讀 38,902評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼窜司!你這毒婦竟也來了沛善?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,662評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤塞祈,失蹤者是張志新(化名)和其女友劉穎金刁,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體议薪,經(jīng)...
    沈念sama閱讀 44,110評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡尤蛮,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了斯议。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片产捞。...
    茶點(diǎn)故事閱讀 38,577評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖哼御,靈堂內(nèi)的尸體忽然破棺而出坯临,到底是詐尸還是另有隱情,我是刑警寧澤恋昼,帶...
    沈念sama閱讀 34,258評(píng)論 4 328
  • 正文 年R本政府宣布看靠,位于F島的核電站,受9級(jí)特大地震影響液肌,放射性物質(zhì)發(fā)生泄漏衷笋。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,848評(píng)論 3 312
  • 文/蒙蒙 一矩屁、第九天 我趴在偏房一處隱蔽的房頂上張望辟宗。 院中可真熱鬧,春花似錦吝秕、人聲如沸泊脐。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,726評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽容客。三九已至秕铛,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間缩挑,已是汗流浹背但两。 一陣腳步聲響...
    開封第一講書人閱讀 31,952評(píng)論 1 264
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留供置,地道東北人谨湘。 一個(gè)月前我還...
    沈念sama閱讀 46,271評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像芥丧,于是被迫代替她去往敵國和親紧阔。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,452評(píng)論 2 348

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

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理续担,服務(wù)發(fā)現(xiàn)擅耽,斷路器,智...
    卡卡羅2017閱讀 134,628評(píng)論 18 139
  • Angular CLI 是什么物遇? Angular CLI 是一個(gè)命令行接口(Command Line Interf...
    semlinker閱讀 4,174評(píng)論 0 39
  • 導(dǎo)語 Angular2(已經(jīng)統(tǒng)一更名為Angular乖仇,而Angular1表示1.x版本,以下統(tǒng)稱Angular都是...
    cipchk閱讀 2,763評(píng)論 1 46
  • ?今天參加完朋友的婚禮,看到典禮上朋友對(duì)老婆的誓言蕉朵,親朋好友的祝福崔涂,很是感動(dòng)阳掐,心情很美麗始衅。可在回家的路上卻看到了這...
    涅槃的軒爹閱讀 623評(píng)論 7 15
  • 我沒有特別喜歡吃的菜缭保,從小就是個(gè)容易滿足的人汛闸。對(duì)食物上確實(shí)沒有太多的要求∫章睿可能正因?yàn)榇酥罾希庞辛巳缃癜l(fā)福扭曲的身材吧...
    嫻靜雅之閱讀 362評(píng)論 0 0