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)添加单元测试方法代码

 var httpContext = new DefaultHttpContext();
var queryStringValue = "adb";
var request = new DefaultHttpRequest(new DefaultHttpContext())
{
Query = new QueryCollection
(
new System.Collections.Generic.Dictionary<string, StringValues>()
{
{ "model", queryStringValue }
}
)
}; var logger = NullLoggerFactory.Instance.CreateLogger("Null Logger"); var response = WatchPortalFunction.Run(request, logger); response.Wait(); // Check that the response is an "OK" response
Assert.IsAssignableFrom<OkObjectResult>(response.Result); // Check that the contents of the response are the expected contents
var result = (OkObjectResult)response.Result;
dynamic watchinfo = new { Manufacturer = "Abc", CaseType = "Solid", Bezel = "Titanium", Dial = "Roman", CaseFinish = "Silver", Jewels = };
string watchInfo = $"Watch Details: {watchinfo.Manufacturer}, {watchinfo.CaseType}, {watchinfo.Bezel}, {watchinfo.Dial}, {watchinfo.CaseFinish}, {watchinfo.Jewels}";
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

版权:转载请在文章明显位置注明作者及出处。如发现错误,欢迎批评指正。

使用 Visual Studio 开发、测试和部署 Azure Functions(二)测试,部署的更多相关文章

  1. Visual Studio 2019本地不能运行Azure Functions

    最近一个项目,需要维护同事写得代码,主要是一堆基于 .net core 3.1 的 Azure Functions.想起2年前第一次接触 Azure Functions(那次是基于.net frame ...

  2. SharePoint 2013 工作流之Visual Studio开发示例篇

    SharePoint 2013引用了WF4.0 Foundation,支持使用Designer和Visio进行设计,但是功能受限,而Visual Studio可以开发功能更加丰富的工作流,下面我们简单 ...

  3. Microsoft Azure Web Sites应用与实践【3】—— 通过Visual Studio Online在线编辑Microsoft Azure 网站

    Microsoft Azure Web Sites应用与实践 系列: [1]—— 打造你的第一个Microsoft Azure Website [2]—— 通过本地IIS 远程管理Microsoft ...

  4. 解决无法连接到visual studio开发服务器的问题

    今天vs抽风,调试网站出现下图那样: 然后我开始百度搜索 "无法连接到visual studio开发服务器" 出现很多文章: 打开一篇问题,看了里面的内容, 那个解决办法也不是最好 ...

  5. 用于 Visual Studio 和 ASP.NET 的 Web 应用程序项目部署常见问题

    https://msdn.microsoft.com/zh-cn/library/ee942158(v=vs.110).aspx#can_i_exclude_specific_files_or_fol ...

  6. visual studio开发工具的C#主流控件属性一览表

    visual studio开发工具的C#主流控件属性一览表 详细的介绍了各控制属性的详细中文介绍 C#控件及常用设计整理 1.窗体 1.常用属性 (1)Name属性:用来获取或设置窗体的名称,在应用程 ...

  7. emWin模拟器Visual Studio开发时无法printf打印的问题

    1.emWin模拟器 为了方便用户学习evWin框架,Segger设计了一个PC仿真的工具,可以测试绝大部分GUI的功能,除了方便使用者学习之外,还可以加速项目开发进度.毕竟在PC上用Visual S ...

  8. visual studio 开发linux程序

    VisualGDB支持Linux的原理是,通过ssh连接到Linux系统上通过ssh给linux下达命令 . (类似visualgdb的有windgb  ,这2个都是商业软件.) Visual GDB ...

  9. 微软为Visual Studio开发助手拓展C++支持

    近日,微软宣布了一项 Visual Studio“开发助手”(Developer Assistant)插件的重大更新,其现已支持“基于 C++ 的情境感知 web 解决方案”.开发助手能够嵌入 Vis ...

随机推荐

  1. GPS授时器简介

    GPS授时器简介 GPS是全球定位系统的简称.GPS定位卫星在全球范围内进行定位.导航的系统.GPS所具有的全天候.高精度和自动测量的特点,已经融入到国民经济建设.国防建设和社会发展的各个领域.而在授 ...

  2. 编码的来源于格式简介ANSI、GBK、GB2312、UTF-8、GB18030和 UNICODE

    编码一直是让新手头疼的问题,特别是 GBK.GB2312.UTF-8 这三个比较常见的网页编码的区别,更是让许多新手晕头转向,怎么解释也解释不清楚.但是编码又是那么重要,特别在网页这一块.如果你打出来 ...

  3. 树莓派3b+ 交叉编译 及升级 kernel

    安装 gcc pkg 等工具sudo apt-get install build-essential git 官方介绍 https://www.raspberrypi.org/documentatio ...

  4. JS高精度乘法计算问题(牛客网乘法-求 a 和 b 相乘的值,a 和 b 可能是小数,需要注意结果的精度问题)

    用到的知识点===> toFixed(num); toFixed() 方法可把 Number 四舍五入为指定小数位数的数字; 参数num: 代表小数位数: 例:var num = 5.56789 ...

  5. linux php 安装libiconv过程与总结

    问题:在嵌入式linux 已经安装好的php的情景下,需要安装一个扩展库libiconv 背景:从后台传的数据含有中文(gbk2312)的通过json_encode 显示为null,查阅资料发现jso ...

  6. 使用numpy和PIL实现图像的手绘效果

    输入 输出 代码如下 图像的手绘效果的实现 from PIL import Image import numpy as np a = np.array(Image.open("index.j ...

  7. Python下载各种功能包出问题

    问题详情 点击之后出现 AttributeError: module 'importlib._bootstrap' has no attribute 'SourceFileLoader' 解决方法 c ...

  8. 最详细的SSM(Spring+Spring MVC+MyBatis)项目搭建

    速览 使用Spring+Spring MVC+MyBatis搭建项目 开发工具IDEA(Ecplise步骤类似,代码完全一样) 项目类型Maven工程 数据库MySQL8.0 数据库连接池:Druid ...

  9. Django ajax的简单使用、自定义分页器

    一. ajax初识 1. 前后端传输数据编码格式contentType 使用form表单向后端提交数据时,必须将form表单的method由默认的get改为post,如果提交的数据中包含文件,还要将f ...

  10. wr720n v4 折腾笔记(五):终篇-编译安装openwrt附带njit

    前言: 由于没有多余的U盘,所以想直接压缩生成一个带njit-client的openwrt固件.其中按照网上的教程走,遇到了一些问题,这里前面的步骤来源于网络.后面给出处理问题的方法. 一.准备工作 ...