🎉 🎂 🍰 TesterHome 创立 6 周年纪念日 🍰 🎂 🎉

接口测试 疑问:” 接口测试:为没开发完成的 url 地址 mock 一个响应,url 只能通过 localhost 连接到却不能用本地 ip 访问

694728793 · 2018年03月26日 · 最后由 among29 回复于 2018年03月26日 · 1352 次阅读

主题:为没开发完成的接口做 mock,url 只能通过 localhost 连接到却不能用本地 ip 访问

目的:为一个不具有响应能力的接口,mock一个响应,伪造测试接口的响应。
例如:
现在需要对Aip:8088/services(运行mock程序在机器A)发起请求,我需要在这个响应信息里面写入信息。

现在的问题是:
我想让别人远程调用, Aip 只能用localhost ,修改为我本地ip:192.168.46.12地址之后接口响应链接超时。

pom.xml


<!--mock自定义测试模块-->
<!-- https://mvnrepository.com/artifact/com.squareup.okhttp3/mockwebserver -->
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>mockwebserver</artifactId>
<version>3.6.0</version>
<scope>test</scope>
</dependency>

testng测试方法


@Test
public void testName() throws Exception {
/*
https://github.com/square/okhttp/tree/master/mockwebserver
https://www.jianshu.com/p/7dc3d12ac67f
*/

MockResponse mockResponse = new MockResponse();
mockResponse.setHeader("Content-Type", "application/json");
mockResponse.setHeader("Connection", "keep-alive");
mockResponse.setHeader("User-Agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:48.0) Gecko/20100101 Firefox/48.0");
mockResponse.setHeader("Host", "192.168.46.12");
// mockResponse.setBody("{\"flag\":\"success\",\"message\":\"\"}");
// mockResponse.setBodyDelay(5, TimeUnit.SECONDS);
// server.enqueue(mockResponse);
// server.setDispatcher(new QueueDispatcherImpl());
server.setDispatcher(new QueueDispatcher() {
@Override
public MockResponse dispatch(RecordedRequest request) throws InterruptedException {
switch (request.getMethod().toLowerCase()) {
case "post":
return new MockResponse().addHeader("aa", "1S").setBody("{\"flag\":\"success\",\"message\":\"\"}").setResponseCode(200);
case "get":
return new MockResponse().addHeader("aa", "2S").setBody("{\"flag\":\"faillure\",\"message\":\"\"}").setResponseCode(200);
default:
return new MockResponse().setResponseCode(400);
}
}
});
server.start(8088);
server.url("/services");
TimerOparation.sleep(3000);
}

现在的解决思路:改一个start函数的写法

        server.start(InetAddress.getByName("192.168.46.12"),8088);//localhost 不可访问,ip可访问
// server.start(InetAddress.getByName("host"),8088);//localhost 可访问,ip不可访问

也不行

共收到 8 条回复 时间 点赞

解决思路:
现在的解决思路:改一个start函数的写法

server.start(InetAddress.getByName("192.168.46.12"),8088);//localhost 不可访问,ip可访问
// server.start(InetAddress.getByName("host"),8088);//localhost 可访问,ip不可访问

这是可以通过的,有么有更好的方式?

绑定 0.0.0.0 这个地址就好。

绑定 0.0.0.0,服务器创建tcp 监听套接字绑定INADDR_ANY,不管数据是从哪个网卡过来的,只要是绑定的端口号过来的数据,都可以接收到。

3、4楼正解!

绑定0.0.0.0,不管你电脑几个网卡,都能解析到

多谢各位大侠: server.start(InetAddress.getByName("0.0.0.0"), 8088); //localhost 可访问,ip可访问

设置0.0.0.0是对的,看看对应的监听端口有没有启动。另外看看网络防火墙有没有阻止。

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册