如何编写干净流畅的Web API测试
前言
当我们为Web API编写测试用例时,代码基本是这样的:
public class UnitTest1
{private readonly TestServer _server;private readonly HttpClient _client;public UnitTest1(){// Arrange_server = new TestServer(new WebHostBuilder().UseStartup<Startup>());_client = _server.CreateClient();}[Fact]public async Task Test1(){// Actvar response = await _client.GetAsync("/WeatherForecast");response.EnsureSuccessStatusCode();var responseString = await response.Content.ReadAsStringAsync();var actual = Newtonsoft.Json.JsonConvert.DeserializeObject<IEnumerable<WeatherForecast>>(responseString);// AssertAssert.Equal(5, actual.Count());}
}
我们需要获得HttpResponseMessage response,检查它的StatusCode,如果要对响应内容进行断言,还需要对其反序列化。
这样的问题是,测试用例中的大量代码都是和测试本身无关的,而且用例一多,还会形成大量重复性的代码。
这时,可以试试FluentAssertions.Web,它为HttpResponseMessage提供了大量扩展方法,用于单元测试中的断言。
Demo
1.断言
将上面的测试用例改用FluentAssertions.Web,代码如下:
[Fact]
public async Task Test1()
{// Actvar response = await _client.GetAsync("/WeatherForecast");// Assertresponse.Should().Be200Ok().And.Satisfy<IEnumerable<WeatherForecast>>(model =>{model.Should().HaveCount(5);});
}
现在,断言是不是看起来更自然流畅!
2.失败原因
我们修改代码,仅返回1条数据,使得测试失败:
可以看到,失败原因返回了详细的诊断信息,我们无需再像以前那样,还需要调试代码,检测错误原因了。
结论
使用FluentAssertions.Web,不仅可以编写干净流畅的Web API测试,还可以从断言的失败原因中提取足够的信息,从而减少调试时间。
如何编写干净流畅的Web API测试相关推荐
- 使用Cypress自动化框架进行Web/API测试
文章目录 Cypress介绍 Cypress特点 Cypress运行原理 Cypress安装 Cypress使用 Web页面测试 元素定位方法 元素常用操作 示例演示 参数化测试 使用PO模型 命令运 ...
- everest命令_认识Everest:一个用JavaFX编写的漂亮的REST API测试客户端
everest命令 今天,我们正在探索即将用JavaFX编写的REST API测试客户端. 认识Everest ,以前称为RESTaurant. 珠穆朗玛峰(Everest)依靠的是资源,React灵 ...
- Fluent Web API集成测试
目录 介绍 概念 设置 网络API服务 演示集成测试DLL Clifton.IntegrationTestWorkflowEngine DLL 工作流测试方法DLL 我们的第一个Fluent集成测试 ...
- django restful 请求_利用 Django REST framework 构建 RESTful Web API
利用 Django REST framework 构建 RESTful Web API 终于到了动手操作的环节啦,这一节,我们以师生管理系统为例,带领大家搭建一套 framework Web API. ...
- android 调用 asp.net web api,从 .NET 客户端调用 Web API (C#)
从 .NET 客户端调用 Web API (C#) 11/24/2017 本文内容 此内容适用于以前版本的 .NET. 新开发应该使用 ASP.NET Core. 有关使用 Core Web API ...
- API测试基础知识(基本概念、测试方法、测试工具)
目录 什么是API? 什么是API测试 API测试的测试用例: API测试方法: 如何进行API测试 API测试的最佳做法: API测试检测到的错误类型 API测试工具 API测试的挑战 结论: 总结 ...
- python的web压力测试工具-pylot安装使用
pylot是python编写的一款web压力测试工具.使用比较简单.而且测试结果相对稳定. 这里不得不鄙视一下apache 的ab测试,那结果真是让人蛋疼,同样的url,测试结果飘忽不定,看得人心惊肉 ...
- Web API 持续集成:PostMan+Newman+Jenkins(图文讲解)
2019独角兽企业重金招聘Python工程师标准>>> 本文由葡萄城技术团队于OSChina原创并首发 转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务, ...
- 在Asp.net应用程序中构建基于WCF Web.Api的服务
WCF Web API Preview 5 发布了,你可以官方网站下载或通过Nuget安装它. 下面让我们在Asp.net applicatoin中来实现一个非常简单的web api service. ...
最新文章
- 记录一下利用ffmpeg将avi转为mp4
- 听说最近你读过不少书
- 23.C语言中#if 0,#if 1,#else,#endif的作用
- visual MySQL 教程_Visual Studio操作MySQL的详细步骤
- Grafana plugins zabbix 安装
- 关于游戏平衡性——王者荣耀英雄伤害数值参考
- java笔试题_Java面试才到笔试就没有然后了?快来签收,高频笔试57题及解答
- rails log_level
- c语言实现各种排序,c语言实现各种排序算法
- Git合并两个不同的仓库
- C++Builder 2010深入TApplication类之方法
- 计算机 继续教育培训心得体会,继续教育培训总结.doc
- ACP 学习-07-CDN
- matlab 2018 adams,关于ADAMS与MATLAB联合仿真的一点经验
- TFIDF算法Java实现
- XS9950是单路AHDRX芯片,国产单通道模拟复合视频解码芯片方案,硬件替代TP9950。
- sed替换指定字符串为某变量的值
- i7-1160G7 怎么样 相当于什么水平
- ubuntu无法进入图形界面,停留在【ok】启动界面
- 计算机打印后台处理程序在哪里,Win7系统连接打印机出现本地打印后台处理程序服务没有运行怎么办...
热门文章
- DDD为何叫好不叫座?兼论DCI与业务分析的方法论
- 智能电网时代的网络空间安全
- 数学在计算机科学上的应用文献,浅谈数学在计算机科学及应用中的作用
- 好用的shell工具_精选5个酷毙的Python工具
- org.eclipse.jdt.internal.compiler包下的类找不到
- 使用Spring访问Mongodb的方法大全——Spring Data MongoDB查询指南
- Unity3D脚本的生命周期(执行顺序)
- IIS6文件权限不对触发了Windows身份认证问题解决方法
- 面向全球用户的Teams app之夏令时篇
- 开发Teams的messaging extension