繁体   English   中英

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

[英]Testing with Canopy in one command line step

上下文 - 手动运行测试

假设我有一个 C# ASP.NET Core web 应用程序,我正在使用canopy进行测试。 我有一个名为Test的树冠项目。 以下是我通常如何手动运行我的树冠测试的 go。

在一个 PowerShell window 我运行 web 应用程序:

dotnet run

然后在另一个 PowerShell window 我运行树冠测试项目:

dotnet run --project .\Test\Test.fsproj 

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

一步运行测试

我想要一种从命令行一步完成所有这些的方法。 所以我有一个 PowerShell function 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 .\Test\Test.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

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

test-app

问题

我的问题是,canopy 用户通常会做什么来测试他们的应用程序? 你只是采取“运行应用程序”然后“运行测试”的手动方法吗? 你有一些类似于上面的自动化方法吗? 有没有更好的常用方法?

感谢您的任何建议!

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

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

天篷也是如此

  1. 构建 Canopy 应用程序
  2. 发布应用程序工件
  3. 部署到运行 UI 测试 + 运行测试的环境

在具有分离职责(开发、质量保证)的大型团队中工作时,测试应用程序和 Canopy 之间的生命周期/部署过程分离可以帮助您。 但是为了快速的本地开发,您的方法没有错。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM