前言

当我们为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测试相关推荐

  1. 使用Cypress自动化框架进行Web/API测试

    文章目录 Cypress介绍 Cypress特点 Cypress运行原理 Cypress安装 Cypress使用 Web页面测试 元素定位方法 元素常用操作 示例演示 参数化测试 使用PO模型 命令运 ...

  2. everest命令_认识Everest:一个用JavaFX编写的漂亮的REST API测试客户端

    everest命令 今天,我们正在探索即将用JavaFX编写的REST API测试客户端. 认识Everest ,以前称为RESTaurant. 珠穆朗玛峰(Everest)依靠的是资源,React灵 ...

  3. Fluent Web API集成测试

    目录 介绍 概念 设置 网络API服务 演示集成测试DLL Clifton.IntegrationTestWorkflowEngine DLL 工作流测试方法DLL 我们的第一个Fluent集成测试 ...

  4. django restful 请求_利用 Django REST framework 构建 RESTful Web API

    利用 Django REST framework 构建 RESTful Web API 终于到了动手操作的环节啦,这一节,我们以师生管理系统为例,带领大家搭建一套 framework Web API. ...

  5. android 调用 asp.net web api,从 .NET 客户端调用 Web API (C#)

    从 .NET 客户端调用 Web API (C#) 11/24/2017 本文内容 此内容适用于以前版本的 .NET. 新开发应该使用 ASP.NET Core. 有关使用 Core Web API ...

  6. API测试基础知识(基本概念、测试方法、测试工具)

    目录 什么是API? 什么是API测试 API测试的测试用例: API测试方法: 如何进行API测试 API测试的最佳做法: API测试检测到的错误类型 API测试工具 API测试的挑战 结论: 总结 ...

  7. python的web压力测试工具-pylot安装使用

    pylot是python编写的一款web压力测试工具.使用比较简单.而且测试结果相对稳定. 这里不得不鄙视一下apache 的ab测试,那结果真是让人蛋疼,同样的url,测试结果飘忽不定,看得人心惊肉 ...

  8. Web API 持续集成:PostMan+Newman+Jenkins(图文讲解)

    2019独角兽企业重金招聘Python工程师标准>>> 本文由葡萄城技术团队于OSChina原创并首发 转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务, ...

  9. 在Asp.net应用程序中构建基于WCF Web.Api的服务

    WCF Web API Preview 5 发布了,你可以官方网站下载或通过Nuget安装它. 下面让我们在Asp.net applicatoin中来实现一个非常简单的web api service. ...

最新文章

  1. 记录一下利用ffmpeg将avi转为mp4
  2. 听说最近你读过不少书
  3. 23.C语言中#if 0,#if 1,#else,#endif的作用
  4. visual MySQL 教程_Visual Studio操作MySQL的详细步骤
  5. Grafana plugins zabbix 安装
  6. 关于游戏平衡性——王者荣耀英雄伤害数值参考
  7. java笔试题_Java面试才到笔试就没有然后了?快来签收,高频笔试57题及解答
  8. rails log_level
  9. c语言实现各种排序,c语言实现各种排序算法
  10. Git合并两个不同的仓库
  11. C++Builder 2010深入TApplication类之方法
  12. 计算机 继续教育培训心得体会,继续教育培训总结.doc
  13. ACP 学习-07-CDN
  14. matlab 2018 adams,关于ADAMS与MATLAB联合仿真的一点经验
  15. TFIDF算法Java实现
  16. XS9950是单路AHDRX芯片,国产单通道模拟复合视频解码芯片方案,硬件替代TP9950。
  17. sed替换指定字符串为某变量的值
  18. i7-1160G7 怎么样 相当于什么水平
  19. ubuntu无法进入图形界面,停留在【ok】启动界面
  20. 计算机打印后台处理程序在哪里,Win7系统连接打印机出现本地打印后台处理程序服务没有运行怎么办...

热门文章

  1. DDD为何叫好不叫座?兼论DCI与业务分析的方法论
  2. 智能电网时代的网络空间安全
  3. 数学在计算机科学上的应用文献,浅谈数学在计算机科学及应用中的作用
  4. 好用的shell工具_精选5个酷毙的Python工具
  5. org.eclipse.jdt.internal.compiler包下的类找不到
  6. 使用Spring访问Mongodb的方法大全——Spring Data MongoDB查询指南
  7. Unity3D脚本的生命周期(执行顺序)
  8. IIS6文件权限不对触发了Windows身份认证问题解决方法
  9. 面向全球用户的Teams app之夏令时篇
  10. 开发Teams的messaging extension