将测试结果发布到Azure(VS Database Project,tSQLt,Azure Pipelines,Docker)

坏坏

我正在尝试使用Azure Pipeline完全自动化数据库项目的生成,测试和发布。

我已经有一个由三个数据库项目组成的Visual Studio解决方案。第一个项目是数据库,其中包含表,存储过程,函数,数据等。第二个项目是tSQLt框架(如果有兴趣,则为1.0.5873.27393版)。最后,第三个项目是tSQLt测试。

我的目标是将解决方案检查到源代码控制中,管道将自动构建解决方案,将dacpacs部署到构建服务器(在本例中为docker),运行tSQLt测试,并将结果发布回管道。

我的管道是这样的。

  • 建立视觉工作室解决方案
  • 发布工件
  • 设置运行Ubuntu和SQL Server的Docker容器
  • 安装SQLPackage
  • 将dacpacs部署到SQL实例
  • 运行tSQLt测试
  • 发布测试结果

直到发布结果为止的所有工作都可以正常进行,但是在此步骤中,我遇到以下错误:

[警告]无法读取/home/vsts/work/1/Results.xml。错误:根级别的数据无效。第1行,位置1。

我在管道中添加了另一个步骤,以显示Results.xml文件的内容。看起来像这样:

XML_F52E2B61-18A1-11d1-B105-00805F49916B                                                                                                                                                                                                                        
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
<testsuites><testsuite id="1" name="MyNewTestClassOne" tests="1" errors="0" failures="0" timestamp="2021-02-01T10:40:31" time="0.000" hostname="f6a05d4a3932" package="tSQLt"><properties/><testcase classname="MyNewTestClassOne" name="TestNumberOne" time="0.

我不确定文件中是否应包含列名和破折号,但我猜不是。我添加了删除它们的另一个步骤,只剩下XML。但这给了我一个不同的错误来处理:

## [warning]无法读取/home/vsts/work/1/Results.xml。错误:没有未关闭的文字字符串。第2行,位置1。

这一点很明显,因为如您在上面所看到的,XML是不完整的。

这是我的管道的一部分,该管道运行tSQLt测试并将结果输出到Results.xml

- script: |
    sqlcmd -S 127.0.0.1,1433 -U SA -P Password.1! -d StagingDB -Q 'EXEC tSQLt.RunAll;'
  displayName: 'tSQLt - Run All Tests'
- script: |
    cd $(Pipeline.Workspace)
    sqlcmd -S 127.0.0.1,1433 -U SA -P Password.1! -d StagingDB -Q 'SET NOCOUNT ON; EXEC tSQLt.XmlResultFormatter;' -o 'tSQLt_Results.xml'
  displayName: 'tSQLt - Output Results'

我研究了很多关于此的博客和文章,并且大多数人都在做同样的事情。有些人使用PowerShell而不是sqlcmd,但是鉴于我使用的是Ubuntu计算机,因此这里不是一个选择。

我没有选择的余地,所以我正在寻找一些帮助。

马可

您在这里处理2个问题。您的结果集中有噪音,不是xml,并且您的xml结果在256个字符后被截断。我都可以帮助您。

我在做什么基本上是这样的:

/opt/mssql-tools/bin/sqlcmd \
    -S "localhost, 31114" -U sa \
    -P "password" \
    -d dbname \
    -y0 \
    -Q "BEGIN TRY EXEC tSQLt.RunAll END TRY BEGIN CATCH END CATCH; EXEC tSQLt.XmlResultFormatter" \
        | grep -w "<testsuites>" \
        | tee "resultfile.xml"

几件事要注意:

  • y0 重要的这将xml结果集的长度从256设置为无限制。
  • 带正则表达式的grep-确保仅获取xml,而不获取周围的噪音。

如果您只想运行测试的一个子集,则需要对传入的SQL查询进行修改,但除此之外,这是所有运行所有测试并以xml格式获取结果的“唯一条件” ,可由Azure DevOps读取

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何将Azure管道测试结果发布到SonarCloud

来自分类Dev

在Azure Pipelines中的Docker映像中运行apt-get

来自分类Dev

为什么Azure Devops Pipelines Docker Build无法将提交版本正确地标记到dotnet核心程序集中?

来自分类Dev

Azure DevOps Pipelines将Docker映像推送到Container Registry Denied

来自分类Dev

Azure Pipelines上的MSOLEDBSQL

来自分类Dev

从Azure存储帐户在Azure上发布测试结果

来自分类Dev

如何在Azure DevOps Pipelines中的变量中获取单元测试结果?

来自分类Dev

Azure Pipelines将xUnit InlineData视为一项测试,而不是多项测试

来自分类Dev

将Terraform的Azure SQL资源从``azurerm_sql_database''升级到``azurerm_mssql_database''

来自分类Dev

Azure Create Database In Code

来自分类Dev

Azure Pipelines覆盖管道变量

来自分类Dev

Azure Pipelines合并未评估

来自分类Dev

Azure Pipelines VSBuild配置无效

来自分类Dev

从 Azure Pipelines 更新 JIRA 问题

来自分类Dev

如何在Azure DevOps发布管道中保存测试结果

来自分类Dev

在Azure Devops中发布VSTest的测试结果失败

来自分类Dev

在Azure Devops中发布xunit测试结果失败,并显示“找不到要发布的结果”

来自分类Dev

是否可以将测试计划中的测试用例附加到管道发布测试运行结果上?Azure DevOps API V6.0

来自分类Dev

将Azure移动应用发布到Azure门户

来自分类Dev

如何远程桌面 (RDP) 到 Azure Pipelines 的托管代理

来自分类Dev

无法从VS 2013 RC发布到Azure(禁止403)

来自分类Dev

通过 VS 发布到 Azure 不起作用?

来自分类Dev

如何在不使用Azure的情况下将Visual Studio 2015中的ASP.NET 5项目发布到Docker映像或Linux

来自分类Dev

将Android Studio项目与Azure Pipelines CI / CD集成

来自分类Dev

Azure Pipelines for Gradle项目失败,导致发布发布构件失败,并出现错误:找不到PathtoPublish

来自分类Dev

将Docker PostgreSQL数据存储到Azure存储帐户

来自分类Dev

我可以将Docker容器部署到Azure Webapp吗

来自分类Dev

变量模板中的Azure Pipelines参数值

来自分类Dev

无法授权Azure Pipelines中的变量组

Related 相关文章

  1. 1

    如何将Azure管道测试结果发布到SonarCloud

  2. 2

    在Azure Pipelines中的Docker映像中运行apt-get

  3. 3

    为什么Azure Devops Pipelines Docker Build无法将提交版本正确地标记到dotnet核心程序集中?

  4. 4

    Azure DevOps Pipelines将Docker映像推送到Container Registry Denied

  5. 5

    Azure Pipelines上的MSOLEDBSQL

  6. 6

    从Azure存储帐户在Azure上发布测试结果

  7. 7

    如何在Azure DevOps Pipelines中的变量中获取单元测试结果?

  8. 8

    Azure Pipelines将xUnit InlineData视为一项测试,而不是多项测试

  9. 9

    将Terraform的Azure SQL资源从``azurerm_sql_database''升级到``azurerm_mssql_database''

  10. 10

    Azure Create Database In Code

  11. 11

    Azure Pipelines覆盖管道变量

  12. 12

    Azure Pipelines合并未评估

  13. 13

    Azure Pipelines VSBuild配置无效

  14. 14

    从 Azure Pipelines 更新 JIRA 问题

  15. 15

    如何在Azure DevOps发布管道中保存测试结果

  16. 16

    在Azure Devops中发布VSTest的测试结果失败

  17. 17

    在Azure Devops中发布xunit测试结果失败,并显示“找不到要发布的结果”

  18. 18

    是否可以将测试计划中的测试用例附加到管道发布测试运行结果上?Azure DevOps API V6.0

  19. 19

    将Azure移动应用发布到Azure门户

  20. 20

    如何远程桌面 (RDP) 到 Azure Pipelines 的托管代理

  21. 21

    无法从VS 2013 RC发布到Azure(禁止403)

  22. 22

    通过 VS 发布到 Azure 不起作用?

  23. 23

    如何在不使用Azure的情况下将Visual Studio 2015中的ASP.NET 5项目发布到Docker映像或Linux

  24. 24

    将Android Studio项目与Azure Pipelines CI / CD集成

  25. 25

    Azure Pipelines for Gradle项目失败,导致发布发布构件失败,并出现错误:找不到PathtoPublish

  26. 26

    将Docker PostgreSQL数据存储到Azure存储帐户

  27. 27

    我可以将Docker容器部署到Azure Webapp吗

  28. 28

    变量模板中的Azure Pipelines参数值

  29. 29

    无法授权Azure Pipelines中的变量组

热门标签

归档