目录

前言

功能测试

测试案例

编写代码

启动应用

结论


前言

在前面的文章中,我们已经介绍过 Playwright for .NET ,它常用于自动化测试已经部署好的 Web 应用。

其实,开发人员也可以使用它在 ASP.NET Core 应用程序中进行功能测试。

功能测试

功能测试是从用户角度编写,用于基于其要求验证系统的正确性。由于功能测试在系统级别运行,所以可能需要一定程度的UI自动化。

目前常用的实现方式[1],是验证给定的路由(比如"/")是否返回预期的成功状态代码和 HTML 输出,例如:

[Fact]
public async Task ReturnsHomePageWithProductListing()
{// Arrange & Actvar response = await Client.GetAsync("/");response.EnsureSuccessStatusCode();var stringResponse = await response.Content.ReadAsStringAsync();// AssertAssert.Contains(".NET Bot Black Sweatshirt", stringResponse);
}

测试案例

但是,这样测试不能保证用户交互后是否返回预期的输出。

例如,我们需要测试,点击“Privacy”链接,显示正确的页面数据,如下图:

这时,我们就可以使用 Playwright for .NET 来编写功能测试。

编写代码

在 WebApplication1 解决方案中添加 XUnit 项目,引用 nuget 包Microsoft.Playwright

像普通自动化测试那样,编写测试用例代码:

const string BaseURL = "http://localhost:5000";[Fact]
public async Task Test1()
{var playwright = await Playwright.CreateAsync();var browser = await playwright.Chromium.LaunchAsync();var page = await browser.NewPageAsync();await page.GotoAsync(BaseURL);await page.ClickAsync("a[href='/Privacy']");var handle = await page.WaitForSelectorAsync("h1");var text = await handle.InnerTextAsync();Assert.Equal("Privacy Policy", text);
}

启动应用

现在测试还不能正常执行,因为我们是在解决方案中进行测试,并没有真正启动应用,导致 Playwright 无法浏览 BaseURL。

因此,我们需要在测试代码顶部启动应用。

实现方式也很简单,直接调用Program.cs的CreateHostBuilder方法启动站点:

public async Task Test1()
{await WebApplication1.Program.CreateHostBuilder(new string[] { $@"--urls={BaseURL}" }).Build().StartAsync();

这里有个小技巧,我们传递--urls参数,指定了应用默认地址。

现在,功能测试可以正常执行,并通过测试了。

结论

功能测试可以确保应用程序的前端按预期运行,使用 Playwright for .NET 保证了用户交互也是按预期执行。

使用Playwright对ASP.NET Core应用执行功能测试相关推荐

  1. 使用 Playwright 对 ASP.NET Core 应用执行功能测试

    前言 在前面的文章中,我们已经介绍过 Playwright for .NET,它常用于自动化测试已经部署好的 Web 应用. 其实,开发人员也可以使用它在 ASP.NET Core 应用程序中进行功能 ...

  2. 在 ASP.NET Core 中执行租户服务

    本博文翻译自: http://gunnarpeipman.com/2017/08/tenant-providers/ 在我之前关于 Entity Framework core 2.0 全局查询过滤器的 ...

  3. ASP.NET Core Web Razor Pages系列教程八: 添加验证

    系列文章目录:系列教程:使用ASP.NET Core创建Razor Pages Web应用程序 - zhangpeterx的博客 系列教程代码的GitHub地址:ASP .Net Core Razor ...

  4. core部署iis的 调试net_远程调试远程 IIS 计算机上的 ASP.NET Core - Visual Studio | Microsoft Docs...

    在 Visual Studio 中远程调试远程 IIS 计算机上的 ASP.NET CoreRemote Debug ASP.NET Core on a Remote IIS Computer in ...

  5. asp.net core 系列 18 web服务器实现

    一. ASP.NET Core Module 在介绍ASP.NET Core Web实现之前,先来了解下ASP.NET Core Module.该模块是插入 IIS 管道的本机 IIS 模块(本机是指 ...

  6. 在ASP.NET Core上实施每个租户策略的数据库

    不定时更新翻译系列,此系列更新毫无时间规律,文笔菜翻译菜求各位看官老爷们轻喷,如觉得我翻译有问题请挪步原博客地址 本博文翻译自: http://gunnarpeipman.com/2017/08/da ...

  7. 十二个 ASP.NET Core 例子

    前言 在今天的博客中,我将介绍十几个可以在 ASP.NET Core 应用程序中使用的简单示例.从最简单的东西开始,比如 Options, 中间件,数据库,甚至 Nginx 或者 Docker. 首先 ...

  8. 如何一秒钟从头构建一个 ASP.NET Core 中间件

    前言 其实地上本没有路,走的人多了,也便成了路. -- 鲁迅 就像上面鲁迅说的那样,其实在我们开发中间件的过程中,微软并没有制定一些策略或者文档来约束你如何编写一个中间件程序, 但是其中却存在者一些最 ...

  9. 让我们Core在一起:ASP.NET Core amp; .NET Core

    Microsoft .NET 自 2002 年发行 v1.0 以来,已经过了近 14 个年头,在这 14 年里面,.NET 日渐成熟并成为 Microsoft 的重要开发平台之一,只要是在 Windo ...

最新文章

  1. 手写html5游戏,HTML5 手写输入法
  2. 为什么 Django 能持续统治 Python 开发世界
  3. 043_CSS32D转换
  4. 如何找到Partner 相关设置里哪些是SAP 标准deliver的,哪些是我们自己创建的
  5. notepad++与ISE/Vivado关联
  6. 2018-2019-1 20165211 实验四 外设驱动程序设计
  7. javascript中打印对象显示[object object]_js如何打印object对象
  8. MySQL入门 (四) : JOIN 与UNION 查询
  9. Spring Cloud Config统一管理微服务配置
  10. P2046 [NOI2010]海拔
  11. asp.net在动态网页中的使用技巧
  12. VS如何安装.nupkg文件
  13. AUTOCAD——快速提取说明文字
  14. JDK历史所有版本下载地址(附Oracle帐号)
  15. 对比线程,一个VCPU是什么
  16. java计算机毕业设计vue健康餐饮管理系统设计与实现MyBatis+系统+LW文档+源码+调试部署
  17. SpringMVC框架|Handler处理器的三种写法
  18. 【图结构专题】有向图
  19. 电子漫画系列更新9张美图,共计47张,收藏收藏!
  20. 【JVM 学习笔记 05】:JVM性能调优工具的使用和优化案例

热门文章

  1. hdb interface驱动是什么_Linux USB 鼠标驱动程序详解
  2. 唯有自己变得强大_只有自己变得强大,才够让你的人生一帆风顺
  3. python super().__init__()_python——多继承使用super().__init__ 发生的状态
  4. python将对象放入列表根据某个属性排升序_对python 对象列表根据某个属性排序的方法...
  5. python抓取网站图片_利用python抓取网站图片
  6. 添加空值_Python基础 | 0x8空值、布尔类型、数字类型
  7. 炫彩色块海报设计背景PSD素材,跟上设计趋势
  8. 圣诞美妆海报还没想好怎么设计,看这里,PSD分层模板!
  9. 否在为一个新品牌或企业寻找设计独特标识的灵感?集设给你灵感
  10. C4d酷炫立体空间质感电商海报素材,紧抓时尚潮流