我有一个web应用程序,我想使用Selenium进行测试,该应用程序使用REST API与后端通信。
据我所知,Selenium主要用于测试通过应用程序的流程以及这些状态下的小部件的外观/存在。这对我来说,在编写Selenium测试来模拟后端时很有意义。Python是我选择的语言,但我也熟悉node.js、javascript和JAVA。关于模拟REST API,您会推荐哪种方法?我在考虑用Python写一个服务器。我可以在我的测试环境中创建这个服务器,并在逐个测试的基础上配置它如何响应来自前端的请求。有没有什么工具、库可以推荐给我?
我还应该补充说,我正在使用raml来定义我的api。
因此,使用我对后端的模拟,测试将如下所示:
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
...发布于 2017-01-25 17:19:11
要模拟简单的REST API,可以尝试基于node.js的json-server。
它很容易设置,你只需要创建包含一些数据的JSON文件来模拟数据库,json-server会为你创建所有常见的REST API路由。
发布于 2017-01-25 17:24:18
我会毫不犹豫地选择Python。
请看一下requests模块:http://docs.python-requests.org/en/master/
它真的很容易安装和使用REST消息发出请求。无论您要做什么,我都会继续使用Python。如何在安装后通过请求使用REST API (例如使用pip ):
import requests
class RESTIF():
'''
Class to handle a connection towards your server
'''
def __init__(self):
'''Initialization of a single Session and header dictionary to be used for REST requests.'''
self.nSession = requests.Session()
# Default header values to get initial connection:
self.header = {"Content-Type":"application/json",
"KeepAlive":"true",
"Authorization":"Basic ",
"Cookie": None}
def action(self, URL, JSONdata):
myCreate = self.nSession.post(URL, headers=self.header, data=JSONdata)在Cookie交换的情况下,标头非常有用。请求将会处理这一点。
您可以轻松地登录到rest api或发送PUT/POST/DELETE/GET消息!一切皆有可能,不需要切换到Java或其他语言。如果您有其他问题或您的问题得到了解决,请告诉我。祝你玩得愉快!
发布于 2017-01-25 18:35:19
有很多库和工具可以帮助你做到这一点。您正在谈论的是创建一个测试工具,或者模拟器/模拟器。在大多数情况下,通常建议后端的构建和开发人员为您提供工具,因为他们是API的所有者,并控制不同的版本和更改。反过来,您可以向他们提供您的客户端,这样他们就可以了解您是如何使用API的。
如果他们不能做到这一点,那么您将需要自己创建一个线束。对于HTTP API来说,最好的工具就是WireMock
http://wiremock.org/
在您的示例中,您可能希望将其作为独立运行:
http://wiremock.org/docs/running-standalone/
然后使用JSON文件配置来定义行为。
我更喜欢将您的WireMock测试工具包装和部署为Docker镜像,并发布到Docker存储库,以便其他人可以使用它。在本例中,它只是一个用以下代码创建Dockerfile并运行docker容器的例子:
文档文件
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]https://stackoverflow.com/questions/41846976
复制相似问题