亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

angularjs中的e2e測試實例

2019-11-20 13:48:24
字體:
來源:轉載
供稿:網友

在上一篇文章里有講到ng的單元測試,今天來說說e2e(端對端)測試.

當我們測試某個模塊的單個功能點時,單元測試最適合,不過當面臨用戶進行多個頁面交互的時候產生bug了,單元測試就不行了,這時候就得用e2e來模擬用戶操作還原問題現場.當然利用e2e測試也能夠測試程序的健壯性,很多單元測試辦不到的事情,e2e測試都能夠辦到.

之前,ng是利用Angular Scenario Runner來運行e2e測試,現在已經換成Protractor來跑e2e了.

Protractor

Protractor是Angularjs里用來測試e2e的框架,它本身是一個npm模塊,內部是構建在WebDriverJS之上的,Protractor能夠真正讓你的測試用例運行在瀏覽器上,完全模擬用戶的真實行為.

下面貼上它的一些資源地址:

1.Protractor提供的測試api
2.Protractor簡單使用例子
3.WebDriverJs指南,這是Protractor依賴的核心,npm模塊名為selenium-webdriver

Protractor運行原理

Protractor運行e2e測試所依賴的主要有以下幾個東西:

1.WebDriver APIs,就是上面提到的WebDriverJs,是由Selenium提供給前端測試用的相關js api
2.Selenium Server,一個后端jar包,用來負責跟瀏覽器驅動進行通訊用的
3.WebDriver browser drivers,用來顯示真實網站內容并與Selenium Server通訊用,這里才是傳遞真實瀏覽器操作的地方

整個運行過程如下圖

想了解更多關于這幾個組件之前交互的可以點擊這里

利用ng種子項目來講解e2e

我們利用ng官方提供的種子項目來講解一個真實的e2e例子,首先利用下面命令獲取種子項目

復制代碼 代碼如下:

git clone https://github.com/angular/angular-seed.git

然后運行

復制代碼 代碼如下:

npm install

安裝相關的所有依賴文件

這里先說下運行e2e測試需要的配置文件,可以看到test/protractor-conf.js這個文件就是用來配置相關功能的,重點說下幾個屬性

1.specs 代表要運行的測試文件路徑,這里寫的是e2e/*.js
2.baseUrl 代表測試文件中瀏覽器間跳轉頁面的根地址
3.capabilities 代表使用哪個瀏覽器來運行測試用例,比如使用chrome,可以這樣設置

復制代碼 代碼如下:

capabilities: {
    'browserName': 'chrome'
  }

framework 代表使用的哪種測試框架,這里使用的是jasmine

想了解更多關于這個配置文件的可以點擊這里查看

說完了配置文件,我們再來看看測試用例的寫法,先貼上一個官網上的例子

復制代碼 代碼如下:

'use strict';

/* https://github.com/angular/protractor/blob/master/docs/getting-started.md */

describe('my app', function() {

  browser.get('index.html');
  it('should automatically redirect to /view1 when location hash/fragment is empty', function() {
    expect(browser.getLocationAbsUrl()).toMatch("/view1");
  });


  describe('view1', function() {

    beforeEach(function() {
      browser.get('index.html#/view1');
    });


    it('should render view1 when user navigates to /view1', function() {
      expect(element.all(by.css('[ng-view] p')).first().getText()).
        toMatch(/partial for view 1/);
    });

  });


  describe('view2', function() {

    beforeEach(function() {
      browser.get('index.html#/view2');
    });


    it('should render view2 when user navigates to /view2', function() {
      expect(element.all(by.css('[ng-view] p')).first().getText()).
        toMatch(/partial for view 2/);
    });

  });
});


 
首先上面的語法是jasmine框架支持的寫法,不了解它的用法的可以點擊這里 

這里只說下上面例子里關于protractor提供的一些常用方法與屬性

1.browser,全局對象,代表當前瀏覽器的一個實例,常用的get方法用來實現瀏覽器改變地址
2.element,全局對象,提供像jquery里負責查找文檔元素的功能,常于by對象聯合使用
3.by, 全局對象,提供一個選擇器類型,比如可以通過css,model,bind等特性來查找一個元素

關于element與by的方法可以參考上面的protractor api文檔

說了這么多,該跑一跑上面的測試用例了,命令比較簡單

復制代碼 代碼如下:

npm run update-webdriver

這個負責下載相關的瀏覽器驅動與selenium-server 本地jar包,一般情況下這個都是會失敗的,因為這兩個資源都在google服務器那,所以可以利用瀏覽器翻墻單獨下載,地址如下:

1.Chrome Driver地址,一般下載chromedriver_2.9.zip這個文件.

2.selenium-server 本地jar包 下載,一般下載selenium-server-standalone-2.40.0.jar這個文件.

然后把selenium-server拷到protractor包里的selenium文件夾里去,假如上面的命令超時之后,這里也會出現文件不過是空的,直接替換就可以;還要把chromedriver_2.9.zip解壓之后的文件拷到這里

最后運行下面的命令可以看到測試結果了

復制代碼 代碼如下:

npm run protractor

想了解更多關于ng種子項目里的命令行,可以點擊這里查看

總結

ng的e2e測試要比單元測試配置要繁瑣的多,不過它能做的事情也很多,非常值的你也試一試,有什么問題可以回復到評論里去.

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲午夜久久久久久久| 国产欧美精品久久久| 一本色道久久88综合日韩精品| 亚洲深夜福利网站| 国内精品久久久久影院 日本资源| 亚洲一区二区在线| 久久亚洲精品一区二区| 欧美日韩国产中文精品字幕自在自线| 亚洲成人av资源网| 国产成人jvid在线播放| 91极品视频在线| 国内揄拍国内精品| 亚洲美女激情视频| 国产精品入口夜色视频大尺度| 国产精品扒开腿做爽爽爽视频| 精品视频一区在线视频| 在线观看亚洲视频| 一区二区三区视频免费在线观看| 日韩免费av在线| 久久久免费精品视频| 欧美日本高清视频| 高跟丝袜欧美一区| 亚洲2020天天堂在线观看| 亚洲精品欧美极品| 91精品国产综合久久香蕉| 欧美性猛交xxx| 国产精品久久久久久网站| 亚洲人成伊人成综合网久久久| 欧美大片大片在线播放| 上原亚衣av一区二区三区| 国产成人精品久久二区二区| 亚洲免费av电影| 日韩欧美黄色动漫| 亚洲最大av网| 欧美日本国产在线| 热门国产精品亚洲第一区在线| 亚洲男人天堂九九视频| 狠狠躁夜夜躁人人躁婷婷91| 亚洲日韩中文字幕在线播放| 国产精品久久久999| 国产精品日韩欧美| 激情懂色av一区av二区av| 91人人爽人人爽人人精88v| 欧美日韩精品在线视频| 亚洲综合精品一区二区| 亚洲天堂男人天堂| 97成人精品视频在线观看| 色999日韩欧美国产| 久久露脸国产精品| 95av在线视频| 国产精品极品美女粉嫩高清在线| 日韩大片免费观看视频播放| xxx欧美精品| 上原亚衣av一区二区三区| 国产中文字幕日韩| 欧美日韩色婷婷| 亚洲欧美日韩国产中文| 亚洲一区二区三区sesese| 国产精品99导航| 午夜精品蜜臀一区二区三区免费| 亚洲精品久久视频| 日韩在线观看免费高清完整版| 精品亚洲夜色av98在线观看| 国产精品极品尤物在线观看| 日韩在线观看免费网站| 亚洲天堂男人天堂女人天堂| 97视频在线观看成人| 国产一区二区三区久久精品| 亚洲美女在线视频| 日韩视频欧美视频| 日本精品一区二区三区在线播放视频| 亚洲视频第一页| 国产亚洲精品综合一区91| 精品国产一区二区三区久久| 亚洲情综合五月天| 久久韩剧网电视剧| 欧美激情一级欧美精品| 日韩免费视频在线观看| 亚洲一区二区福利| 亚洲精品不卡在线| 日韩精品一二三四区| 欧美激情一区二区三区高清视频| 国产精品视频一区二区高潮| 欧美视频国产精品| 国产精品亚洲美女av网站| 日韩免费观看av| 日韩免费观看av| 亚洲第一精品夜夜躁人人躁| 福利一区视频在线观看| 日韩高清a**址| 亚洲女性裸体视频| 国产婷婷97碰碰久久人人蜜臀| 国产成人精品视频| 97精品国产aⅴ7777| 中文字幕亚洲无线码a| 91精品久久久久久久久久久久久久| 一本一本久久a久久精品牛牛影视| 懂色aⅴ精品一区二区三区蜜月| 国产精品亚洲精品| 成人精品久久一区二区三区| 亚洲国产日韩欧美在线图片| 亚洲精品自拍第一页| 亚洲男人av在线| 中文字幕九色91在线| 日本亚洲欧洲色| 久久中文字幕在线视频| 欧美激情第一页xxx| 欧美日韩中文字幕综合视频| 黑人巨大精品欧美一区二区一视频| 少妇精69xxtheporn| 日韩欧美精品网址| 日韩精品视频免费| 国产成人拍精品视频午夜网站| 久久91精品国产91久久久| 久久久久日韩精品久久久男男| 国外成人在线直播| 日韩理论片久久| 亚洲电影在线观看| 亚洲人成亚洲人成在线观看| 亚洲一区二区久久久久久| 国产精品视频男人的天堂| 欧美日韩精品二区| 伊人久久男人天堂| 欧美日韩国产页| 亚洲第一区中文字幕| 97av视频在线| 在线观看国产精品日韩av| 色无极影院亚洲| 国产精品视频在线播放| 欧美性xxxx在线播放| 91精品在线看| 国产精品老牛影院在线观看| 欧美日韩在线观看视频小说| 亚洲欧美国产视频| 精品自拍视频在线观看| 日本免费在线精品| 国产99久久久欧美黑人| 国产专区欧美专区| 亚洲xxx自由成熟| 97精品国产97久久久久久春色| 欧美日韩日本国产| 欧美黑人国产人伦爽爽爽| 国产精品欧美激情在线播放| 亚洲区在线播放| 欧美日韩中文字幕| 中文字幕欧美精品日韩中文字幕| 欧美激情在线播放| 国产日韩精品在线| 午夜精品福利电影| 国模精品系列视频| 黄色91在线观看| 欧美性xxxx极品hd欧美风情| 国产精品色午夜在线观看| 成人性生交大片免费观看嘿嘿视频| 日本精品视频在线观看| 国产视频精品va久久久久久| 午夜伦理精品一区| 亚洲色图激情小说| 亚洲成人国产精品| 久久精品国产精品亚洲| 欧美黑人性猛交| 欧美刺激性大交免费视频| 亚洲精品午夜精品| 欧美电影在线观看网站|