【问题标题】:Specflow tests running on local web server在本地 Web 服务器上运行的 Specflow 测试
【发布时间】:2022-01-14 21:49:48
【问题描述】:

我正在尝试将 Specflow 与 Playwright 一起使用,以便在开发的门户应用程序上执行 BDD,但我遇到了一个小问题。

Specflow 项目是一个带有 ASP.Net 核心服务器的单独项目,它具有门户应用程序的 Api(它在 Vue 中)。由于测试指向特定的 URL(当前为 localhost),因此在运行测试之前,我需要在本地运行 ASP.Net core & Vue 项目。否则,Specflow & Playwright 将无法进行测试(因为它找不到本地主机)。

有什么方法可以强制运行 Web 服务器项目吗?我尝试使用 dotnet build 从 Visual Studio 外部运行它,然后使用 dotnet run 命令,但不知何故,它们缺少参数(从 VS 内部运行时存在)并且除了也就是说,在尝试运行测试时必须以某种方式触发这些命令。

我见过一些解决方案,例如从 Docker Compose 文件创建 Docker 映像,以便在运行 Specflow 测试之前在其中打包一个 .Net 项目和服务器。然后在 BeforeTestRun 钩子中使用 FluentDocker 来启动服务器,但我不太确定这是更简单(或最好)的解决方案。

有谁知道我如何触发运行 .net 核心项目(使用 Vue 页面)?

【问题讨论】:

  • 如果您在 Windows 上,请安装 IIS(Internet 信息服务),它是一个 Web 服务器。安装 IIS 后,您需要在 IIS 中创建一个 Web 应用程序来托管 ASP.NET Core Web 应用程序。在运行测试之前,使用 dotnet publish 发布 Web 应用程序。一些 PowerShell 脚本可以使这些步骤更容易,但不是必需的。
  • 我终于找到了一个解决方案,可以使用 Kestrel 从命令行运行项目,然后像往常一样从 VS 内部运行测试用例。不允许从命令行运行 dotnetcore 在 IISExpress 中运行它们,因此它需要 Kestrel 的启动配置文件。

标签: visual-studio asp.net-core bdd specflow playwright


【解决方案1】:

这实际上是一个相当大的问题,有一个相当大的答案,但是这是一个很好的基础。这个问题与其说是一个“规范流”问题,不如说是一个一般的自动化测试问题。像continuous integrationcontinuous delivery 这样的开发实践可以提供帮助。每个问题对于一个问题来说都太大了,但是我可以更笼统地回答这个问题。

在最简单的形式中,在本地运行自动化测试涉及以下步骤:

  1. 构建应用程序
  2. 将应用程序部署到真实的 Web 服务器
  3. 运行测试

我将假设您在 Windows 环境中进行开发,但是每个操作系统都有某种可用的命令行脚本解决方案。脚本语言可能会改变,但总体思路不会改变。

  1. 配置网络服务器。在 Windows 中,这将是 Internet 信息服务 (IIS)。

  2. 将新的“应用程序”(或某些人称之为“IIS 应用程序”)添加到您的 localhost Web 服务器。将物理目录指向 Web 项目的根目录。对系统所需的每个网站或 Web 应用重复此操作。

  3. 编写一个 PowerShell 脚本,让您可以轻松地构建应用程序并将其部署到本地 Web 服务器。

    此脚本应使用在 Visual Studio 中设置的发布配置文件,它允许您在通过测试资源管理器手动调用测试之前直接从 Visual Studio 发布。

  4. 编写一个 PowerShell 脚本,使用具有“线束”脚本来协调构建、本地部署,然后调用 dotnet test

在本地运行测试只需要一行 PowerShell 来调用您的测试工具脚本:

.\Scripts\Run-Tests.ps1 -solutionDir . -tags BlogPosts,Create

# Skip deploying in case web apps haven't changed:

.\Scripts\Run-Tests.ps1 -solutionDir . -tags BlogPosts,Create -deploy:False

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-05-10
    • 2015-10-06
    • 1970-01-01
    • 2016-01-07
    • 2019-09-30
    • 2018-08-29
    • 1970-01-01
    相关资源
    最近更新 更多