上下文-手动运行测试
比方说,我有一个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本身就是一个应用程序,应该这样处理:
- 构建应用程序
- 运行应用程序的测试(单元测试(
- 发布应用程序项目
- 部署到测试环境+启动
Canopy 也是如此
- 构建遮篷应用程序
- 发布应用程序项目
- 部署到运行UI测试的环境+运行测试
测试应用程序和Canopy之间的生命周期/部署流程分离可以帮助您在职责分离的大型团队中工作(开发、QA(。但为了当地的快速发展,你的做法没有错。