【问题标题】:not able to delete test cases in azure devops through powershell scripts无法通过 powershell 脚本删除 azure devops 中的测试用例
【发布时间】:2020-05-28 15:36:10
【问题描述】:

我已经检查了How to delete multiple test cases in Azure DevOps

它不适合我。

单独使用 PowerShell 脚本,我想在 Azure DevOps 中一次性删除多个测试用例。目前,门户网站一次只允许删除一个。

我尝试过如下方式,并抛出异常。

$url = "https://dev.azure.com/testarulmouzhie/testDemo_Project/_apis/test/testcases/21?api-version=5.0-preview.1"
Invoke-RestMethod -Uri $url -Method Delete -ContentType application/json

它会引发如下错误-

即使尝试使用新的 api 版本,也会出现同样的错误-

$url = "https://dev.azure.com/testarulmouzhie/testDemo_Project/_apis/test/testcases/21?api-version=5.1-preview.1"
Invoke-RestMethod -Uri $url -Method Delete -ContentType application/json

附上参考的错误-

Invoke-RestMethod :
Azure DevOps
Service Status Support @AzureDevOps
At line:1 char:1
+ Invoke-RestMethod -Uri $url -Method Delete -ContentType application/json
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-RestMethod], WebExc
   eption
    + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeRestMethodCommand

谁能帮忙解决这个问题? 提前致谢。

对于 ref,无论如何简单的 GET rest api 调用都可以正常工作。我已经尝试过以下一种,并且工作正常。

$AzureDevOpsPAT = "a2wzly2bsirXXXXXXXXXXXXXXXXXXXXXXXXXXX"
$OrganizationName = "testarulmouzhie"

$AzureDevOpsAuthenicationHeader = @{Authorization = 'Basic ' + [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(":$($AzureDevOpsPAT)")) }

$UriOrga = "https://dev.azure.com/$($OrganizationName)/" 
$uriAccount = $UriOrga + "_apis/projects?api-version=5.1"

Invoke-RestMethod -Uri $uriAccount -Method get -Headers $AzureDevOpsAuthenicationHeader

甚至使用 fiddler 并尝试捕获错误日志 - 也附上这些

【问题讨论】:

  • 它在消息中显示“Azure DevOps 服务状态支持@AzureDevOps”。其他 REST 调用对您有用吗?也许是一个简单的GET
  • @Ash ,是的,简单的 GET 就像一个魅力!
  • 您可以将其发布为关闭此问题的答案。
  • @JoeyCai,提到 Get 已经工作,但 Delete 抛出错误,我想做 Delete 调用。
  • 如果您也使用latest version of the APIDELETE 是否有效?我看到您的 GET 示例适用于 5.1。如果没有,可能是您没有使用此方法或调用此 API 的权限吗?请尝试使用最新版本并在代码块中而不是屏幕截图中发布完整的错误。

标签: azure powershell azure-devops azure-rest-api


【解决方案1】:

无法通过 powershell 脚本删除 azure devops 中的测试用例

您似乎没有使用 REST API Test Cases - Delete 的测试计划许可。

Azure 测试计划使用名为 Basic + Test Plans 的访问级别,您需要基本 + 测试计划许可证来管理测试计划和测试套件等。请查看以下链接:

Manual test permissions and access

这里有两种方法可以确保您拥有正确的许可证。

1) 为用户分配了测试管理器扩展许可证 - https://marketplace.visualstudio.com/items?itemName=ms.vss-testmanager-web

2) 用户订阅了 VS Enterprise 或 Test Professional

您可以通过访问测试中心并尝试使用与 REST API 中使用的相同用户(帐户创建 PAT)直接添加测试用例来实现此目的。

查看this thread了解一些详细信息。

希望这会有所帮助。

【讨论】:

  • 嗨,Leo,我已经全面检查了你上面提到的所有有价值的观点。在我的场景中,我拥有基本 + 测试计划许可证,并且我是我的帐户的管理员。此外,我还为创建的个人访问令牌-PAT 提供了完全访问权限。即使是我拥有的所有访问权限,在 powershell 中运行删除脚本时也面临上述问题。我不熟悉powershell脚本,所以我怀疑我的powershell脚本可能有问题,但不确定错误背后的真正原因。
【解决方案2】:

啊,我想你错过了 delete Invoke API 中的 autorizationheader

请包括 -Headers $AzureDevOpsAuthenicationHeader,如下所示

--give below your pat access token

$AzureDevOpsPAT = "ukcvd42u5rXXXXXXXXXXXXXXXXXXX";
$AzureDevOpsAuthenicationHeader = @{Authorization = 'Basic ' + [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(":$($AzureDevOpsPAT)")) };
$url = "https://dev.azure.com/testarulmouzhie/testDemo_Project/_apis/test/testcases/21?api-version=5.0-preview.1"
Invoke-RestMethod -Uri $url -Method Delete -ContentType application/json -Headers $AzureDevOpsAuthenicationHeader;

正如 Leo 所建议的,它也可能与许可证有关,那么如何检查您的许可证以获取测试用例?

【讨论】:

  • 谢谢!它解决了这个问题。我添加了授权标头,并开始试用基本 + 测试计划。所以现在它正在工作!
猜你喜欢
  • 2019-11-18
  • 1970-01-01
  • 2021-11-05
  • 1970-01-01
  • 1970-01-01
  • 2019-11-24
  • 1970-01-01
  • 2021-01-04
  • 1970-01-01
相关资源
最近更新 更多