我有一个网络应用程序,我想使用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
...
答案 0 :(得分:0)
对于模拟简单的REST API,您可以尝试基于node.js的json-server。
设置起来很简单,你只需创建带有一些数据的JSON文件来模拟db,json-server将为你创建所有常见的REST API路径。
答案 1 :(得分:0)
我会毫无问题地选择Python。
请查看请求模块: 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交换的情况下,标头非常有用。请求将处理此事。
您可以轻松登录到休息api或发送PUT / POST / DELETE / GET消息! 一切皆有可能,无需切换到Java或其他语言。 如果您有其他疑问或解决了您的问题,请与我们联系。有一个伟大的!
答案 2 :(得分:0)
有许多库和工具可以帮助您解决此问题。你在谈论的是创建测试工具或模拟器/模拟器。在大多数情况下,通常建议构建和开发后端的人员为您提供线束,因为他们是API的所有者并控制不同的版本和更改。相反,您可以向他们提供您的客户,以便他们了解您如何使用API。
如果他们不能这样做,那么你需要自己创建一个安全带。帮助您为HTTP API执行此操作的最佳工具是WireMock
在您的示例中,您可能希望将其作为Stand Alone:
运行http://wiremock.org/docs/running-standalone/
然后使用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]