如何正确配置XmlHttpTest以读取Web服务导致FitNesse测试

时间:2018-01-31 21:23:19

标签: fitnesse

我一直在尝试在FitNesse中配置XmlHttpTest(https://github.com/fhoeben/hsac-fitnesse-fixtures)来创建基本的SOAP Web服务测试。

我似乎无法确定测试所需的语法/配置。

我的测试页面如下: -

!path fixtures
!path fixtures/*.jar

!define slim.port {0}
!define TEST_SYSTEM {slim}

!define URL {http://localhost:55088/GetEmployee.asmx}

!define POST_BODY_4 { {{{
<s11:Envelope xmlns:s11="http://schemas.xmlsoap.org/soap/envelope/">
  <s11:Body>
    <ns1:GetEmployees xmlns:ns1="http://someorg.co.uk/">
    </ns1:GetEmployees>
  </s11:Body>
</s11:Envelope>
}}} }

|Import|
|nl.hsac.fitnesse.fixture|
|nl.hsac.fitnesse.fixture.slim|

|script|xml http test|

|table template |send request                                                    |
|post           |${POST_BODY_4} |to           |${URL}                            |
|check          |response status|200                                             |
|show           |response                                                        |
|$Name=         |xPath          |//Employee[1]/FirstName/text()                  |

|send request       |
|Name?      |
|Fred|

Web服务方法返回以下内容(在show response中可见): -

<?xml version="1.0" encoding="UTF-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <soap:Body>
        <GetEmployeesResponse xmlns="http://someorg.co.uk/">
            <GetEmployeesResult>
                <Employee>
                    <FirstName>Fred</FirstName>
                    <LastName>Bloggs</LastName>
                    <id>123</id>
                    <FacilityName>London</FacilityName>
                </Employee>
            </GetEmployeesResult>
        </GetEmployeesResponse>
    </soap:Body>
</soap:Envelope>

我的测试失败(null是实际结果)。我想我的xPath部分错了,但我不确定原因。没有名称空间前缀,所以我想我不需要使用register prefix

有什么想法吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

http://someorg.co.uk/确实需要一个命名空间,即响应使用它作为GetEmployeesResponse下面所有元素的默认值,但不会改变它存在的事实。

假设您为“http://someorg.co.uk/”注册了'a'​​命名空间,您的xPath将变为://a:Employee[1]/a:FirstName/text()(并且由于只有一个Employee,而且没有其他FirstName子项,您也可以编写{{ 1}}