首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何模拟REST API接口?

如何模拟REST API接口?
EN

Stack Overflow用户
提问于 2017-01-25 16:45:04
回答 3查看 4.9K关注 0票数 1

我有一个web应用程序,我想使用Selenium进行测试,该应用程序使用REST API与后端通信。

据我所知,Selenium主要用于测试通过应用程序的流程以及这些状态下的小部件的外观/存在。这对我来说,在编写Selenium测试来模拟后端时很有意义。Python是我选择的语言,但我也熟悉node.js、javascript和JAVA。关于模拟REST API,您会推荐哪种方法?我在考虑用Python写一个服务器。我可以在我的测试环境中创建这个服务器,并在逐个测试的基础上配置它如何响应来自前端的请求。有没有什么工具、库可以推荐给我?

我还应该补充说,我正在使用raml来定义我的api。

因此,使用我对后端的模拟,测试将如下所示:

代码语言:javascript
复制
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
    ...
EN

回答 3

Stack Overflow用户

发布于 2017-01-25 17:19:11

要模拟简单的REST API,可以尝试基于node.js的json-server

它很容易设置,你只需要创建包含一些数据的JSON文件来模拟数据库,json-server会为你创建所有常见的REST API路由。

票数 0
EN

Stack Overflow用户

发布于 2017-01-25 17:24:18

我会毫不犹豫地选择Python。

请看一下requests模块:http://docs.python-requests.org/en/master/

它真的很容易安装和使用REST消息发出请求。无论您要做什么,我都会继续使用Python。如何在安装后通过请求使用REST API (例如使用pip ):

代码语言:javascript
复制
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或其他语言。如果您有其他问题或您的问题得到了解决,请告诉我。祝你玩得愉快!

票数 0
EN

Stack Overflow用户

发布于 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容器的例子:

文档文件

代码语言:javascript
复制
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

命令行

代码语言:javascript
复制
docker build -t wiremock/apiname:[version] .
docker run -d -p [exposedport]:8080 -v /directory/with/json:/opt/mappings --name apiname wiremock/apiname:[version]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41846976

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档