1. 程式人生 > >如何用ABP框架快速完成專案

如何用ABP框架快速完成專案

要想快速完成一個專案, 自動化是很關鍵很有用的一塊.

  1. 自動化測試比人工測試快很多. 特別是在迴歸測試中.
  2. 實踐證明, 雖然投入了時間在寫自動化測試程式碼上, 但是在迴歸測試中節省了大量的時間,同時及時發現bug挽救回來時間收益大大超過了早期寫自動化測試程式碼的投入.
  3. 特別是要測試瀏覽器相容性的時候,只寫一遍自動化測試程式碼,就能自動的快速的在所有瀏覽器跑完測試。
  4. 我們這系列文章是使用abp裡的asp.net core + angular結構.
  5. angular裡的UI自動化測試(簡稱e2e)使用的是protractor.

 所以有了這篇文章.

從大家的反饋中得知,

  1. 99%的同學之前都沒有接觸過這一塊.
  2. protractor官網資料很多, 把官網看一遍會很耗時間, 不夠快速.
  3. 而我們這系列文章的關鍵詞就是”快速"
  4. 所以我就先從最簡單的說起讓大家快速入手.

 先從安裝protractor開始說起.

第1節 如何安裝和初始化設定

  1. vscode在angular專案目錄下新建一個terminal(終端), 敲如下命令然後回車: npm install -g protractor
  2. 上一條命令完成後, 繼續敲如下命令然後回車: webdriver-manager update
  3. 上一條命令完成後, 繼續敲如下命令然後回車: webdriver-manager start
  4. 然後關閉這個terminal(終端), 這點十分重要!!!不然接下來寫test case然後跑起來的時候會提示埠被佔用

第2節 開始第一個test case (以登入為例)

  1. Vscode開啟angular專案目錄/e2e/src/app.po.ts
  2. 輸入如下程式碼:
     getUserNameInput() {
        return element(by.name('userNameOrEmailAddress'));
      }
    
      getPasswordInput() {
        return element(by.name('password'));
      }
    
      getLoginButton() {
        return element(by.buttonText('登入'));
        // return element(by.id('loginbtn')); // 後備措施,比如是英文環境的時候,上面程式碼就doesn't work,就要用這句了。
      }
    
      getLogoutButton() {
        return element(by.buttonText('登出'));
      }
    
  3. Vscode開啟angular專案目錄/e2e/src/app.e2e-spec.ts
  4. 在頭部import要引用的類
    import { browser } from 'protractor';
    
  5. 把如下程式碼註釋掉
    // describe('workspace-project App', () => {
    //   let page: AppPage;
    
    //   beforeEach(() => {
    //     page = new AppPage();
    //   });
    
    //   it('should display welcome message', () => {
    //     page.navigateTo();
    //     expect(page.getParagraphText()).toEqual('Welcome to YoyoCmsTemplate!');
    //   });
    // });
    
  6. 寫具體的自動化測試程式碼:
    describe('管理員登入', () => {
      let page: AppPage;
    
      beforeEach(() => {
        page = new AppPage();
      });
    
      it('輸入正確使用者名稱和密碼', () => {
        page.navigateTo();
        // browser.waitForAngularEnabled(); // 等待程式載入完
        page.getUserNameInput().sendKeys('admin'); // 輸入使用者名稱
        page.getPasswordInput().sendKeys('123qwe'); // 輸入密碼
        // 等待登入按鈕從disable變成enable
        browser.wait(function () {
          return page.getLoginButton().isEnabled;
        }
        ).then(function () {
          // console.log(page.getLoginButton());
          page.getLoginButton().click(); // 點選登入按鈕
          expect(page.getLogoutButton().isEnabled()).toBe(true); // 出現登出按鈕,意味著登入成功了
        });
      });
    });
    
  7. vscode在angular專案目錄下新建一個terminal(終端), 敲如下命令然後回車: ng e 
  8. 如果前面配置都正確的話,會自動彈出一個chrome瀏覽器,並且出現下圖。這時候表示自動化測試已經正常跑起來了,以後的問題就不再是配置問題,是測試用例程式碼有問題了

  9. 瀏覽器會自動輸入使用者名稱密碼,並點選登入。
  10. 那麼怎麼檢視測試結果呢?回到vscode剛才那個terminal(終端),這裡會顯示測試結果。嗯,對的,這裡不會像ng test一樣彈出一個瀏覽器顯示測試結果,這裡只會在命令列終端顯示測試結果。
  11. 跑完一次測試用例後記得要關閉這個terminal(終端), 這點十分重要!!!不然接下來再跑有一定機率會出錯。

Q&A

問題0:為啥我輸入ng test沒有得到同樣結果? 回答:ng test和ng e是完全不同的兩回事,結果當然不一樣,所以你應該輸入ng e.
問題1:為啥我複製了你的程式碼卻出錯? 回答:我的程式碼是建立在角落白板報的52abp2018年11月份版本上的,如果你不是使用這個版本52abp,那麼裡面的使用者名稱和密碼元素的捕抓和值都要做相應更改。
問題2:為啥我執行webdriver-manager update出錯? 回答:99%是網路原因。

第3節 寫更多test case
第4節 使用cucumber來加快寫test case的速度
第5節 測試瀏覽器相容性 - 同時在多個不同瀏覽器裡跑測試
嗯, 考慮99%的同學之前都還沒接觸過protractor, 大家先把前面兩塊完成消化之後, 給我反饋,我根據大家的反饋再更新第3、4、5節吧.

相關推薦

如何用ABP框架快速完成專案(5) - ABP一個人快速完成專案(1) - 使用程式碼生成器

用ABP一個人快速完成專案有如下要點: 站在巨人的肩膀上 - 使用程式碼生成器 站在巨人的肩膀上 - 使用成熟控制元件框架, 一個框架不夠就上兩個, 兩個不夠就上三個 通過微服務模式而不是蓋樓式來避免難度升級 運用BDD/TDD等先進方法論 運用DevOps 注

如何用ABP框架快速完成專案(8) - ABP一個人快速完成專案(4) - 能自動化就不要手動 - 使用自動化測試(BDD/TDD)

做為一個程式設計師, 深深知道計算機自動化的速度是比人手動的速度快的, 所以”快速”完成專案的一個重要武器就是: 能自動化就不要手動.   BDD/TDD有很多優勢, 其中之一就是自動化, 我們這節文章先講自動化, 在後面的文章裡面會講到BDD/TDD的其他優勢

如何用ABP框架快速完成專案(4) - 如何正確使用ABP?

正如我在< 如何用ABP框架快速完成專案(2) - 快的定義!>提到的, 很多同學在使用ABP中遇到很多問題, 花了很多時間和精力, 然而從最根本的角度和方向上來看這些問題應該是不存在。 這些問題如果你正確使用了ABP是根本不會遇到這些問題的.  

如何用ABP框架快速完成專案(10) - ABP只要加人即可馬上加快專案進展- 全棧篇(1) - 發揮DDD理論優勢的時候到了!

正如我在< 程式設計師英語二三事(2) - 從聽開始>裡說的, 任何技術/工具/語言都有其適用場景和上下文環境. DDD理論同樣是如此.   現在, 終於到了發揮DDD理論優勢的時候啦!   一個人做一個專案不用擔心程式碼風格不一致

如何用ABP框架快速完成專案(14) - 結尾? 當然不是, 這只是開始!

本課程是方向性課程, 目的是避免南轅北轍. 方向盤一旦打正確, 還得需要以下文章去寫好具體程式: 前面每篇文章裡面的連結, 比如角落白板報裡面的視訊課程. http://www.cnblogs.com/farb https://www.cnblogs.com/kebine

如何用ABP框架快速完成專案

要想快速完成一個專案, 自動化是很關鍵很有用的一塊. 自動化測試比人工測試快很多. 特別是在迴歸測試中. 實踐證明, 雖然投入了時間在寫自動化測試程式碼上, 但是在迴歸測試中節省了大量的時間,同時及時發現bug挽救回來時間收益大大超過了早期寫自動化測試程式碼的投入. 特別是要測試瀏覽器相容性的時候,

ssm框架寫sms專案

歷經一個禮拜的時間在ssm框架的學習和練習中,我逐漸認識和理解了ssm框架 在開發過程中的優勢所在。 前兩天在理解專案的需求和要求後,按照教案例項的步驟和結合功能需求, 做出來了學生管理專案的雛形。能實現基本功能,但在框架的結構功能還有點 懵懂。接下來一天的專

看不懂程式碼,不會框架,新手程式設計師入職後如何快速上手專案

大家好,我是良許。 對於職場新人,特別是應屆畢業生,他們拿到offer之後,進入公司後會有一段時間的焦慮感。比如說,不懂公司專案開發流程,程式碼看不懂,業務流程也不知道,框架不會用,等等還有各種各樣的問題。 所以很多人一開始都會在擔心自己能不能勝任這個職位,會不會連試用期都過不了。其實這個心態是很常見的,

使用程式碼生成工具快速開發ABP框架專案

在一般系統開發中,我們一般要藉助於高度定製化的程式碼生成工具,用於統一程式碼風,節省開發時間,提高開發效率。不同的專案,它的專案不同分層的基類定義不同,我們需要在框架基類的基礎上擴充套件我們的業務類程式碼,儘量根據已有資料庫設計的資訊,完整、詳細的重現我們需要的編碼工作,一方面引入必要的關係和程式碼,一方面保

快速開發專案到的工具:UI 設定利器 sketch

需求設計: axaure8.0 tool: teambition/石墨、幕布、   介面管理tool(後端開發介面,pc,m,app使用) https://www.eolinker.com/#/   ui 設計大都用sketch sketch只有蘋果版; 管理工具用藍湖

想要快速完成一個Python專案,離不開這些開源庫

在Python / Django世界中有一句話:我們為語言而來,為社群而留。對我們大多數人來說,這是事實,但讓我們置身於Python世界的另一個原因是,我們很容易就有了一個想法,並且可以幾個小時內讓這個想法快速實現。 本文我們將深入研究我們喜歡使

十個例子,教你統計學方法高效完成機器學習專案(下)【楚才國科】

五、資料準備: 資料一般不會直接拿來建模。為了改變資料的形狀或結構,使它更適用於選定的問題架構或學習演算法,需要對資料進行必要的轉化。 資料準備也會用到統計模型,例如: 1、縮放。例如標準化和規範化。 2、編碼。例如整數編碼和獨熱編碼。 3、變換。例如 Box-Cox

十個例子,教你統計學方法高效完成機器學習專案(上)【楚才國科】

統計學和機器學習是兩個聯絡特別緊密的領域 事實上,這兩者的界限有時候非常模糊。然而有一些明顯屬於統計學領域的方法,不僅可用於機器學習的專案,並且極具價值。公平地說,需要統計學方法來有效地完成機器學習預測建模專案。 一、問題架構: 這包括了問題型別的選擇,例如是迴歸還是分類,也許

#Java乾貨分享:如何用Java框架快速搭建web專案

1、 確定專案方向、架構,編制前端頁面,前端用到boostrap、jQuery、h5、js。 如果有想學習java的程式設計師,可來我們的java學習扣qun:79979,2590免費送java的視訊教程噢!我整理了一份適合18年學習的java乾貨,送給每一位想學的小夥伴,並且每天晚上8點還會在

阿里老司機帶你使用Spring框架快速搭建Web工程專案

演講嘉賓簡介 呂德慶(花名:嵛山), 阿里巴巴高階開發工程師,武漢大學地信碩士,有豐富的系統開發經驗,目前就職於阿里巴巴程式碼中心團隊,負責後端開發。 本文首先將介紹Spring框架的相關概念,其次將藉助Spring Web示例工程帶大家學習如何快速開發Spring Web應用。 一、Sprin

ABP只要加人即可馬上加快專案進展(二) - 分工篇

2018年和1998年其中兩大區別就是: 前端蓬勃發展, 前後端分離是一個十分大的趨勢. 專門的測試人員角色被取消, 多出了一個很重要的角色, 產品經理   ABP只要加入即可馬上加快專案進展, 選擇前後端+產品經理分工結構會比前面的全棧篇好十分多!!!

人生苦短,我Python(六)—通過Flask結合Bootstrap框架快速搭建Web應用(實現前後臺聯動)-3

寫在前面: 這篇文章,寫的比較倉促,先在此致歉。具體情況,可以直接看總結部分。 Flask是一個基於Python開發,依賴jinja2模板和Werkzeug WSGI服務的一個微型框架。Werkzeug用來處理Socket服務,其在Flask中被用於接受和處理http請求;Jinja2被用來

人生苦短,我Python(五)—通過Flask結合Bootstrap框架快速搭建Web應用-2

寫在前面: Flask是一個基於Python開發,依賴jinja2模板和Werkzeug WSGI服務的一個微型框架。Werkzeug用來處理Socket服務,其在Flask中被用於接受和處理http請求;Jinja2被用來對模板進行處理,將模板和資料進行渲染,返回給使用者的瀏覽器。 Boo

人生苦短,我Python(四)—通過Flask結合Bootstrap框架快速搭建Web應用-1

寫在前面: Flask是一個給予Python開發,依賴jinja2模板和Werkzeug WSGI服務的一個微型框架。Werkzeug用來處理Socket服務,其在Flask中被用於接受和處理http請求;Jinja2被用來對模板進行處理,將模板和資料進行渲染,返回給使用者的瀏覽器。 Boo

ABP只要加人即可馬上加快專案進展(二) - 分工篇 - BDD實戰篇 - 在.NET Core下安裝Specflow

這是<如何用ABP框架快速完成專案 >系列中的一篇文章。  BDD很贊!比TDD先進很多,能夠大大提高編碼效率。 讓我們動手起來吧!先在.NET Core下安裝Specflow! 官網教程在這裡   然而官網教程: 是英文的,