我一直在尝试在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
。
有什么想法吗?
谢谢!
答案 0 :(得分:1)
http://someorg.co.uk/
确实需要一个命名空间,即响应使用它作为GetEmployeesResponse
下面所有元素的默认值,但不会改变它存在的事实。
假设您为“http://someorg.co.uk/”注册了'a'命名空间,您的xPath将变为://a:Employee[1]/a:FirstName/text()
(并且由于只有一个Employee,而且没有其他FirstName子项,您也可以编写{{ 1}}