在一个命令行步骤中使用Canopy进行测试



上下文-手动运行测试

比方说,我有一个C#ASP.NET核心web应用程序,我正在用canopy进行测试。我有一个名为Test的遮篷项目。以下是我通常手动运行遮篷测试的方式。

在一个PowerShell窗口中,我运行web应用程序:

dotnet run

然后在另一个PowerShell窗口中,我运行了遮篷测试项目:

dotnet run --project .TestTest.fsproj 

然后我在第一个PowerShell窗口中ctrl-c来停止应用程序。

一步到位运行测试

我想要一种从命令行一步到位的方法。所以我有一个PowerShell函数test-app:

function test-app()
{
reset-database

$proc = run_app

run_canopy
Stop-Process $proc.Id
}

reset-database就是这么做的。它重置数据库,使测试在干净的环境中运行:

function reset-database ()
{
dotnet ef database drop -f
dotnet ef database update
}

run_app负责运行应用程序:

function run_app ()
{
$items = 'dotnet run' -split ' '
Start-Process $items[0] $items[1..100] -PassThru
}

它返回存储在$proc:中的进程

$proc = run_app

run_canopy执行以下操作:

  • 使用Start-Job启动遮篷项目。作业存储在$job_canopy
  • 它通过等待$job_canopy.State成为Completed来等待遮篷完成
function run_canopy ()
{
$dir = (Resolve-Path .).Path
$code = {
param($dir)
cd $dir
dotnet run --project .TestTest.fsproj
}
$job_canopy = Start-Job -ScriptBlock $code -ArgumentList $dir

while ($job_canopy.State -ne 'Completed')
{
Start-Sleep -Seconds 2
}
Receive-Job $job_canopy
}

最后,应用程序停止:

Stop-Process $proc.Id

到目前为止,这一直运行得很好。如果我想测试网络应用程序,我所要做的就是运行:

test-app

问题

我的问题是,遮篷用户通常会做什么来测试他们的应用程序?你只是采取手动的方法";运行应用程序";那么";运行测试";?你有类似于上面的自动化方法吗?有没有更好的常用方法?

谢谢你的建议!

您的方法非常聪明,我喜欢它用于本地开发,在本地开发中,您可以使用单个命令运行应用程序and测试。然而,对于CI/CD管道,我建议将其分为单独的步骤——Canopy本身就是一个应用程序,应该这样处理:

  1. 构建应用程序
  2. 运行应用程序的测试(单元测试(
  3. 发布应用程序项目
  4. 部署到测试环境+启动

Canopy 也是如此

  1. 构建遮篷应用程序
  2. 发布应用程序项目
  3. 部署到运行UI测试的环境+运行测试

测试应用程序和Canopy之间的生命周期/部署流程分离可以帮助您在职责分离的大型团队中工作(开发、QA(。但为了当地的快速发展,你的做法没有错。

相关内容

  • 没有找到相关文章

最新更新