【问题标题】:Prevent Visual Studio Web Test from changing request details防止 Visual Studio Web 测试更改请求详细信息
【发布时间】:2010-03-28 18:53:19
【问题描述】:

我有一个接受 Xmla 查询的分析服务的服务,通常这些查询本身会有一个字符串,其中包含一个看起来像

的片段
{{[Time].[Year].[All]}}

记录这些请求可以正常工作,但是当我尝试重新运行测试时,我从测试运行器那里收到错误...

请求失败:发生异常:WebTestContext 中没有名为“[Time].[Year].[All]”的上下文参数

这让我困惑了一段时间,但是当我要求 VS 生成测试的编码版本时,我能够更好地看到问题。 VS 搜索 '{{' 和 '}}' 标记并进行更改,考虑到这些区域引用 Context 参数,代码看起来像

this.Context["\n\t[Time].[Year].[All]"].ToString()

有人知道如何指示 Visual Studio 不执行此替换操作吗?或者以其他方式解决这个问题?

【问题讨论】:

    标签: visual-studio testing webtest xmla


    【解决方案1】:

    使用双花括号,例如。 “{{ }}”是多余的。您只需要使用一组大括号,例如。 "{ }" 或者如果生成了此代码,它也可以在大括号集之间使用空格,例如。 “{ { } }”

    【讨论】:

      【解决方案2】:

      据我所知,上下文替换行为是自动的且不可控制,但有一些方法可以解决它:

      • 生成编码测试,然后撤消 Visual Studio 所做的操作,例如在出现的任何地方用"{{[Time].[Year].[All]}}" 替换this.Context["\n\t[Time].[Year].[All]"].ToString()。不过这有点可怕。

      • {{[Time].[Year].[All]}} 字符串放入上下文参数并使用该上下文参数而不是原始字符串。 Visual Studio 仅应用一次上下文参数替换,因此它会单独保留生成的字符串值。

      • 第三种可能性是将所有 xmla 字符串 {{[foo]}} 更改为 [[[foo]]],然后在 PreRequest 中编写将 [[[foo]]] 转换回 {{[foo]}} 的 WebTestPlugin 或 WebTestRequestPlugin strong> 测试执行期间的事件。自动替换发生在 PreRequest 之前,因此可以安全地将它们放回花括号。

      【讨论】:

        猜你喜欢
        • 2019-11-05
        • 1970-01-01
        • 2020-09-28
        • 2016-12-07
        • 1970-01-01
        • 1970-01-01
        • 2018-07-16
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多