使用 Visual Studio 開發、測試和部署 Azure Functions(二)測試,部署

1,引言

上一篇介紹了使用使用 Visual Studio 開發 “Azure Functions” 函數,此篇介紹 “Azure Functions” 的測試以及直接從 Vistual Studio 在 Azure 上的部署 ”Azure Functions“應用。

2,創建單元測試項目

       單元測試是敏捷方法的基本部分。 Visual Studio 提供測試項目模板。 使用此模板為應用程序創建單元測試,可將相同的技術應用於 Azure Functions 測試。

(1)在 Visual Studio 的“解決方案資源管理器”窗口中,右鍵單擊“WatchPortalFunction”解決方案,單擊“添加”,然後單擊“新建項目”。

 

 (2)因為模擬在單元測試中模擬使用web api的方式進行測試,所以使用 “nuget” 點擊安裝 “Microsoft.AspNetCore.Mvc”  包,進行測試。

 (3)添加單元測試方法代碼

 1 var httpContext = new DefaultHttpContext();   2             var queryStringValue = "adb";   3             var request = new DefaultHttpRequest(new DefaultHttpContext())   4             {   5                 Query = new QueryCollection   6                 (   7                     new System.Collections.Generic.Dictionary<string, StringValues>()   8                     {   9             { "model", queryStringValue }  10                     }  11                 )  12             };  13  14             var logger = NullLoggerFactory.Instance.CreateLogger("Null Logger");  15  16             var response = WatchPortalFunction.Run(request, logger);  17  18             response.Wait();  19  20             // Check that the response is an "OK" response  21             Assert.IsAssignableFrom<OkObjectResult>(response.Result);  22  23             // Check that the contents of the response are the expected contents  24             var result = (OkObjectResult)response.Result;  25             dynamic watchinfo = new { Manufacturer = "Abc", CaseType = "Solid", Bezel = "Titanium", Dial = "Roman", CaseFinish = "Silver", Jewels = 15 };  26             string watchInfo = $"Watch Details: {watchinfo.Manufacturer}, {watchinfo.CaseType}, {watchinfo.Bezel}, {watchinfo.Dial}, {watchinfo.CaseFinish}, {watchinfo.Jewels}";  27             Assert.Equal(watchInfo, result.Value);

3,運行測試

在“測試資源管理器”窗口,成功的顯示了測試

        3個單元測試方法全部測試成功。

 4,使用Azure 創建 Azure Functions 應用

       Azure Function 在Azure雲中 Azure Function App 的上下文中運行。 函數應用是一個容器,指定用於運行 Azure Functions 的操作系統以及可用資源,例如內存、計算能力和磁盤空間。 Azure Functions 應用還提供用於運行函數的公共 URL。 在後台,Azure Functions 應用是運行 Web 服務器的一個或多個虛擬機的集合。 發佈 Azure Functions 時,需將其部署到這些虛擬機。

       使用 Visual Studio 將函數部署到雲中的 Azure Functions 應用。 首先,將創建 Azure Functions 應用,然後可使用 Visual Studio 中的“發佈”嚮導部署函數。使用 Azure Functions,可輕鬆使用應用服務持續集成部署函數應用。 Azure Functions 可與 BitBucket、Dropbox、GitHub 和 Azure DevOps 集成。 這樣,通過使用其中一項集成服務實現的函數代碼更新所在的工作流將觸發到 Azure 的部署。

持續部署選項非常適合用於頻繁集成多個分發內容的項目。 它還允許維護對函數代碼的源代碼管理。 目前支持以下部署源:

  • GitHub
  • OneDrive
  • Azure DevOps
  • …….

(1)登錄 Azure 在 “Azure” 門戶菜單中,選擇 “創建資源” ,創建 “函數應用

 

 

 (2)點擊函數應該,進行創建 函數應用

 

 

 (3)點擊 “查看+創建” 創建,等待函數應用創建完畢,傳向其資源,查看 “watchfunctions-allenMaster”  概述或者在門戶中選擇 “所有資源” ,點擊“watchfunctions-allenMaster”函數。

 

 

 

5,將 WatchInfo 函數部署到 Azure Functions 應用

(1)在 “Azure.Protal.Functions” 解決方案上,右鍵點擊 “發佈”

   注意:

  1),選擇發佈目標:Azure 應用服務計劃

  2),Azure 應用服務計劃 按需運行代碼的專用計劃,選擇:選擇現有

  點擊 “創建配置文件”

 (2)點擊發佈,將“Azure Functions”應用部署在“Azure”上

 

 

 此時輸出列表顯示  ”發佈成功“,同時在“Azure”門戶中查看剛才部署的”Azure Functions”應用。

       刷新”watchfunctions-allenMaster“ 函數應用,可以看到函數項下多了兩個觸發器

 

 

  此時,我們可以看到我們創建項目的時候默認的 “Function1 HttppTrigger” 和我們在Vistual Studio 中創建的 “WatchPortalFunction Trigger

(3)複製”概覽“ 裏面的 url 或者 Vistual Studio 發佈頁面的 url 在瀏覽器中進行測試  

 當出現這個界面,就顯示創建的azure Functions 運行成功,然後我們進行測試寫的觸發器

(4)瀏覽器輸入:https://watchfunctions-allenmaster.azurewebsites.net/api/WatchPortalFunction?model=abd

 

 

 

現已經在雲中創建了 Azure Functions 應用,並將函數從 Visual Studio 發佈到了此應用。 

ok,在此, 使用Vistual Studio 開發,測試,部署 Azure Functions 應用完結

三、總結

此時,我們對 Visual Studio開發 “Azure Functions”應用有個大概的了解,而以後 Azure Functions 作為Azure 開發的一部分,也是一個很理想的解決方案,用來處理批量數據、集成系統、使用 iot 以及生成簡單的Api和微服務,而微軟在 Azure 中提供的 Azure Function 是 按照使用付費定價模型:也就是僅僅為運行代碼所用的時間而付費,這一點比某雲還是好一些。以上也是自己的學習的過程,謝謝各位指點。

github地址:https://github.com/allentmater/Azure.Portal.Functions.git

作者:Allen 

版權:轉載請在文章明顯位置註明作者及出處。如發現錯誤,歡迎批評指正。