Python中好用的第三方mock库-httmock

Python中好用的第三方mock库-httmock,第1张

在做一些项目的时候,因为用到了第三方的接口,而第三方的接口可能没有做好或者第三方的接口不方便访问的时候,一般都会用到Mock的技术。

Mock这个词在英语中有模拟的这个意思。Python3x中本身就自带了Mock库,(Python2x中还是单独的)Mock是Python中一个用于支持单元测试的库,它的主要功能是使用mock对象替代掉指定的Python对象,以达到模拟对象的行为。

简单的说,mock库用于如下的场景:

假设你开发的项目叫a,里面包含了一个模块b,模块b中的一个函数c(也就是abc)在工作的时候需要调用发送请求给特定的服务器来得到一个JSON返回值,然后根据这个返回值来做处理。如果要为abc函数写一个单元测试,该如何做?

一个简单的办法是搭建一个测试的服务器,在单元测试的时候,让abc函数和这个测试服务器交互。但是这种做法有两个问题:

1 测试服务器可能很不好搭建,或者搭建效率很低。
2 你搭建的测试服务器可能无法返回所有可能的值,或者需要大量的工作才能达到这个目的。

httmock库是基于Mock库的,它更方便于用requests的方式来返回接口的值。

使用pip命令来安装:

用法:

1 您可以使用它来模拟第三方API和在内部使用 requests 的测试库,有条件地使用 urlmatch 装饰器:

控制台显示:

2 all_requests 装饰器没有条件地阻止实际的请求。 如果您返回一个字典,它将映射到返回的“requestResponse”对象:

控制台显示:

3 如果你传递 Set-Cookie 头, requestResponsecookies 将包含这些值。 您也可以直接使用 response 方法,而不是返回一个dict:

控制台显示:

CC先生说:
要明白上面的例子,预备知识至少需要有:
-Python 中requests库的用法
-Python中装饰器的用法

or 你直接套用上面的用法就可以返回第三方接口或者依赖的模块的值了。

以上

不用mock,前端来建立后端服务以便自己实现接口

前端:vue2x, vue-cli-3x, vuex, vue-router, axios
后端:nodejs, express, nodemon

1首先安装nodejs,这个就不赘述了
2全局安装express npm install -g express-generator
3express -v 查看是否安装成功
4打开cmd或者其他控制台并进入项目目录,在我的电脑中的项目路径下,选中路径后输入cmd,可以快速用cmd打开此路径
7全局安装nodemon npm install -g nodemon
8在cmd中启动服务器 nodemon app
启动成功图如下:
然后再前端页面调用接口

这一步就是写接口啦
然而运行后会发现跨域啦,如下图:

如果是vue-cli 2x 就在config/indexjs文件中 的 proxy处修改

11你以为这样就解决跨域了吗,你会发现还是报错

这是因为修改完接口后发现还是报这个错且端口是8080而不是888,原因是修改了代理后,需要重启服务 ,代理未生效。
12重启前端服务后,接口请求成功

14可以看到后端拿到了数据

希望能对跟我一样的前端小白有一些小帮助把!有什么不对或不严谨的的地方也欢迎大家指出哦~

通常前端开发的时候,我们的页面已经开发完成。但是后端的接口不一定已经写完就了。这时候我们就可以自己去伪造一些符合规范的数据,用于前期的测试,等到后端接口完成的时候我们可以在进行一个接口联调。

对于我们前端来说,我们天生就会一个后端开发语言,nodejs即可实现。

我们只需要创建一个简易服务器,对请求路径进行判断,返回对应的mock数据。

Mockjs可以快速通过模板生成数据。

>最近在找一款API文档管理工具,之前有用过Swagger、API Manager、Confluence,现在用的还是Confluence。

我个人一直不喜欢用Swagger,感觉“代码即文档”,让代码里的文档无处不在,已经对代码造成了一定的入侵了。API Manager就是一个纯API文档管理的工具了。Confluence是万能的,也是最简单的,支持各种插件在线安装,可以有各种布局,支持MD文档,也支持表格、代码块等。

最近看到一篇文章在说YAPI,就准备搭建一个试试效果如何。

YAPI是去哪儿网开源的一款API管理工具,理念如下:

特性:

选择YAPI试试手的原因是因为我看到了它支持MockServer,这样前端开发同学就不用等待后端同学了。主要是我也懒得搭建一套mock服务,有这样一款工具何乐而不为呢?所以今天就找了一台服务器安装了一下。考虑排版问题,就以形式放出来了。

nodeJS长期支持版本官网下载地址:>




Mock介绍









1找到要替换的对象:我们需要测试的是visit_ustack这个函数,那么我们需要替换掉send_request这个函数。


2实例化Mock类得到一个mock对象,并且设置这个mock对象的行为。在成功测试中,我们设置mock对象的返回值为字符串“200”,在失败测试中,我们设置mock对象的返回值为字符串"404"。


3使用这个mock对象替换掉我们想替换的对象。我们替换掉了clientsend_request


4写测试代码。我们调用clientvisit_ustack(),并且期望它的返回值和我们预设的一样。


上面这个就是使用mock对象的基本步骤了。在上面的例子中我们替换了自己写的模块的对象,其实也可以替换标准库和第三方模块的对象,方法是一样的:先import进来,然后替换掉指定的对象就可以了。



Mockrunner用在J2EE环境中进行应用程序的模拟测试。它不仅支持Struts actions,servlets,过滤器和标签类,还包括一个JDBC和一个JMS测试框架,可以用于测试基于EJB的应用程序。


Mockrunner扩展了JUnit并模拟了必要的行为,而无需调用实际的基础结构。它不需要正在运行的应用程序服务器或数据库。此外,它不会调用web容器或Struts ActionServlet。它非常快速,使用户可以在测试的所有步骤中 *** 纵所有涉及的类和模拟对象。它可以用于为基于J2EE的应用程序编写非常复杂的单元测试,而不会产生任何开销。Mockrunner不支持任何类型的容器内测试。


Mockrunner不会读取任何配置文件,例如webxml或struts-configxml。您可以使用Mockrunner API指定所有参数。因此,可以将servlet,过滤器,标签和Struts动作作为可重用组件进行测试,而不管您在一个或另一个应用程序中使用的设置如何。无法测试配置文件中的定义。如果要这样做,可以将StrutsTestCase用于基于Struts的应用程序或Cactus。


Mockrunner支持Java版本从13到16以及J2EE 13,J2EE 14和JavaEE5。尚不支持EJB 30。Mockrunner支持Struts版本11、12和13。


下载地址:Mockrunner download | SourceForgenet





最后:可能给你带来帮助的教程软件测试最新自学教程


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/12729559.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-27
下一篇 2023-05-27

发表评论

登录后才能评论

评论列表(0条)

保存