Java 如何模拟RESTAPI接口?
我有一个web应用程序,我想使用Selenium进行测试,该应用程序使用RESTAPI与后端进行通信 据我所知,Selenium主要用于测试通过应用程序的流以及这些状态中每个状态的小部件的外观/存在。这对我来说意味着,当编写Selenium测试来模拟后端时,这非常有意义。Python是我的首选语言,但我也熟悉node.js、javascript和JAVA。关于模拟RESTAPI,您建议采用什么方法。我正在考虑使用Python编写一个服务器。我可以在测试环境中创建此服务器,并配置它如何在逐个测试的基础上响应来自前端的请求。你有什么工具和库可以推荐给我吗 我还应该补充一点,我正在使用raml来定义我的api 因此,通过对后端的模拟,测试将如下所示:Java 如何模拟RESTAPI接口?,java,python,node.js,rest,selenium,Java,Python,Node.js,Rest,Selenium,我有一个web应用程序,我想使用Selenium进行测试,该应用程序使用RESTAPI与后端进行通信 据我所知,Selenium主要用于测试通过应用程序的流以及这些状态中每个状态的小部件的外观/存在。这对我来说意味着,当编写Selenium测试来模拟后端时,这非常有意义。Python是我的首选语言,但我也熟悉node.js、javascript和JAVA。关于模拟RESTAPI,您建议采用什么方法。我正在考虑使用Python编写一个服务器。我可以在测试环境中创建此服务器,并配置它如何在逐个测试的
def test_no_table_for_one_user():
# configure reply for api request
rest_sim.get_users_response = (200, [{name: "Foo Bar", address: "West side"}])
navigate_to_users_page()
# test that this users details are presented without the use of a table
...
def test_table_for_multiple_users():
# configure reply for api request
rest_sim.get_users_response = (200, [{name: "Foo Bar", address: "West side"}, {name: "Foo Baz", address: "East side"}])
navigate_to_users_page()
# test that the two users are presented in the form of a table
...
要模拟简单的RESTAPI,可以尝试基于node.js的
设置起来很容易,您只需要创建JSON文件和一些数据来模拟db,JSON服务器将为您创建所有常见的REST API路由。要模拟简单的REST API,您可以尝试基于node.js的路由
设置起来很容易,你只需要创建JSON文件和一些数据来模拟db,JSON服务器将为你创建所有常见的RESTAPI路由。我会选择Python,没有任何问题 请查看请求模块: 使用REST消息安装和发出请求非常容易。 无论您必须做什么,我都将继续使用Python。 如何在安装后从请求中使用REST API(以pip为例): 在Cookie交换的情况下,标头非常有用。请求会处理好的 您可以轻松处理登录RESTAPI或发送PUT/POST/DELETE/GET消息! 一切皆有可能,无需切换到Java或其他语言。
如果您有其他疑问或解决了您的问题,请告诉我。祝你过得愉快 我会毫无问题地选择Python 请查看请求模块: 使用REST消息安装和发出请求非常容易。 无论您必须做什么,我都将继续使用Python。 如何在安装后从请求中使用REST API(以pip为例): 在Cookie交换的情况下,标头非常有用。请求会处理好的 您可以轻松处理登录RESTAPI或发送PUT/POST/DELETE/GET消息! 一切皆有可能,无需切换到Java或其他语言。
如果您有其他疑问或解决了您的问题,请告诉我。祝你过得愉快 有许多库和工具可用于帮助您完成此任务。您所说的是创建一个测试线束,或模拟器/模拟器。在大多数情况下,通常建议构建和开发后端的人员向您提供工具,因为他们是API的所有者,可以控制不同的版本和更改。反过来,您可以向他们提供您的客户机,以便他们了解您如何使用API 如果他们不能做到这一点,那么您需要自己创建一个安全带。帮助您为HTTP API实现这一点的最佳工具是WireMock 在您的示例中,您可能希望将其作为单机运行: 然后使用JSON文件配置来定义行为 我更喜欢将WireMock测试线束包装并部署为Docker映像,并发布到Docker存储库,以便其他人可以使用它。在这种情况下,它只是使用以下内容创建Dockerfile并运行docker容器的情况: Dockerfile
FROM java:8
WORKDIR /opt
RUN apt-get install wget
RUN wget http://repo1.maven.org/maven2/com/github/tomakehurst/wiremock-standalone/2.5.0/wiremock-standalone-2.5.0.jar
RUN mkdir mappings
VOLUME /opt/mappings
EXPOSE 8080
CMD java -jar wiremock-standalone-2.5.0.jar
docker build -t wiremock/apiname:[version] .
docker run -d -p [exposedport]:8080 -v /directory/with/json:/opt/mappings --name apiname wiremock/apiname:[version]
命令行
FROM java:8
WORKDIR /opt
RUN apt-get install wget
RUN wget http://repo1.maven.org/maven2/com/github/tomakehurst/wiremock-standalone/2.5.0/wiremock-standalone-2.5.0.jar
RUN mkdir mappings
VOLUME /opt/mappings
EXPOSE 8080
CMD java -jar wiremock-standalone-2.5.0.jar
docker build -t wiremock/apiname:[version] .
docker run -d -p [exposedport]:8080 -v /directory/with/json:/opt/mappings --name apiname wiremock/apiname:[version]
有许多库和工具可以帮助您实现这一点。您所说的是创建一个测试线束,或模拟器/模拟器。在大多数情况下,通常建议构建和开发后端的人员向您提供工具,因为他们是API的所有者,可以控制不同的版本和更改。反过来,您可以向他们提供您的客户机,以便他们了解您如何使用API 如果他们不能做到这一点,那么您需要自己创建一个安全带。帮助您为HTTP API实现这一点的最佳工具是WireMock 在您的示例中,您可能希望将其作为单机运行: 然后使用JSON文件配置来定义行为 我更喜欢将WireMock测试线束包装并部署为Docker映像,并发布到Docker存储库,以便其他人可以使用它。在这种情况下,它只是使用以下内容创建Dockerfile并运行docker容器的情况: Dockerfile
FROM java:8
WORKDIR /opt
RUN apt-get install wget
RUN wget http://repo1.maven.org/maven2/com/github/tomakehurst/wiremock-standalone/2.5.0/wiremock-standalone-2.5.0.jar
RUN mkdir mappings
VOLUME /opt/mappings
EXPOSE 8080
CMD java -jar wiremock-standalone-2.5.0.jar
docker build -t wiremock/apiname:[version] .
docker run -d -p [exposedport]:8080 -v /directory/with/json:/opt/mappings --name apiname wiremock/apiname:[version]
命令行
FROM java:8
WORKDIR /opt
RUN apt-get install wget
RUN wget http://repo1.maven.org/maven2/com/github/tomakehurst/wiremock-standalone/2.5.0/wiremock-standalone-2.5.0.jar
RUN mkdir mappings
VOLUME /opt/mappings
EXPOSE 8080
CMD java -jar wiremock-standalone-2.5.0.jar
docker build -t wiremock/apiname:[version] .
docker run -d -p [exposedport]:8080 -v /directory/with/json:/opt/mappings --name apiname wiremock/apiname:[version]
我不确定我是否理解您想要做什么,但您可以使用创建简单的
restapi
,并使用发送HTTP
-请求到restapi
不理解问题。SOAPUI如何?@Baz我已经更新了我的回复,以解释在Python中使用请求模块可以实现什么。(处理rest消息非常简单)。祝您度过愉快的一天。我不确定我是否理解您想要做什么,但您可以使用创建简单的REST API
,并使用发送HTTP
-请求到REST API
不理解问题。SOAPUI如何?@Baz我已经更新了我的回复,以解释在Python中使用请求模块可以实现什么。(处理rest消息非常简单)。祝您有愉快的一天。@SphDev在我上面的问题中,我给出了一个有两个测试的示例,其中对同一端点的响应是不同的。这可以通过json服务器来完成吗?或者我应该使用其他东西吗?不确定它是否能正常工作,但您可以尝试为每个测试用例声明必要的json对象并保存