FitNesse:如何正确配置 XmlHttpTest 以读取 Web 服务结果
FitNesse: How to correctly configure XmlHttpTest to read web service results
我一直在尝试在 FitNesse 中配置 XmlHttpTest 以创建基本的 SOAP Web 服务测试。
我似乎不太确定测试所需的 syntax/config。
我的测试页面是这样的:
!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服务方法returns如下(可见于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
.
您确实需要为 http://someorg.co.uk/
命名空间,事实上响应使用它作为下面所有元素的默认值 GetEmployeesResponse
并不会改变它存在的事实。
假设您为“http://someorg.co.uk/”注册了一个 'a' 命名空间,您的 xPath 变为://a:Employee[1]/a:FirstName/text()
(并且由于只有一名员工,没有其他 children FirstName,你也可以写//a:Employee/a:FirstName
我一直在尝试在 FitNesse 中配置 XmlHttpTest 以创建基本的 SOAP Web 服务测试。
我似乎不太确定测试所需的 syntax/config。
我的测试页面是这样的:
!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服务方法returns如下(可见于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
.
您确实需要为 http://someorg.co.uk/
命名空间,事实上响应使用它作为下面所有元素的默认值 GetEmployeesResponse
并不会改变它存在的事实。
假设您为“http://someorg.co.uk/”注册了一个 'a' 命名空间,您的 xPath 变为://a:Employee[1]/a:FirstName/text()
(并且由于只有一名员工,没有其他 children FirstName,你也可以写//a:Employee/a:FirstName