接口测试平台代码实现75: 多接口用例-15

80 阅读4分钟

    根据我们上一节最后的投票。 引入unittest框架 碾压了第一种。其实我个人也偏向这个。因为我尝试过很多,但是唯独没有引入unittest在接口测试平台中。所以借此机会,也想挑战一下,涨点经验。

    请注意:目前博主是完全完全没这个设计和实现过的状态,和正在看此文章的你一样,让我们感受最原始的设计思路。

    首先我们打开views.py,找到我们写了个开头的这个实际请求的函数:

图片

 既然要引入unittest,那我们这块可能要想到,这么一个测试类,是否应该放在其他文件呢? 我觉得可以试一试一会。

    这里我们从数据库中先拿到所有步骤,然后这些步骤我们利用循环,让其自动生成这个测试类的 子函数。然后运行这个unittest测试类即可。

    这个过程如果不经过讲解,很难看明白来龙去脉。

我们先新建一个其他文件,作为unittest的主要运行文件。而当前的这个views.py 就会履行它真正的作为视图逻辑的交互责任,就是整理过滤前端请求数据,传递给业务层。

    我们在贴着views.py的位置 创建一个新的文件叫: run_case.py:

图片

好了我们继续,用过unittest的人都知道我下面的写法吧:

图片

    非常简单的一个unittest demo。

我们现在就是要想办法,调用这个文件,启动这个unittest

我们现在来想个问题,就是我要怎么调用,并且,还能带着参数-一群步骤

那么现在看这个写法,应该没法带参数,甚至没法调用。因为我们要引入httptestrunner,所以我们正好可以利用起来,具体操作如下:

首先下载并导入这个HTMLTestRunner 文件。

图片

然后代码如下:

图片

这时候我们运行这个run的话,就会执行这个用例,并且生成xxx.html测试报告。

不过我们不在这里运行,而是选择去views.py中调用这个run()函数来运行。

所以这个views.py写法如下:

图片

然后我们重启服务 刷新页面,点击运行按钮 看看效果:

图片

可以看到 成功运行了,并且生成了测试报告:

图片

只是这个报告目前 位置我们还没有设计好,所以默认生成在这了。

右键这个html,选择open in broswer,选择你的浏览器 看看效果:

图片

图片

大家请忽略报告中的一些文案~ 后续我会放上纯净版的这个HTMLTestRunner.py文件。

然后就是我们本节的结尾,就是给这个报告放在指定位置:

在templates包下新建一个名为Reports的包,用来存放我们的测试报告:

然后别忘了删除我们刚刚调试生成的那个报告,记得及时清理这些垃圾。

然后在我们的run函数中,改写这个filename:

图片

然后我们重启服务 再试一次:

图片

发现这次报告生成在了 应该出现的位置。

最后我们顺便再做一下这个查看报告的功能吧,早做出来也早方便我们调试。

打开P_cases.html,找到这个查看报告按钮,给它外面套一层a标签。超链接按图中所写:

图片

然后我们去写好对应的urls.py:

图片

最后去写好对应的views.py中的函数:

图片

我们这时候要思考一个问题,我们怎么来让这些生成的报告文件 能与 用例关联起来而不至于错乱呢?

最简单的办法,我们的html文件就干脆用大用例id来命名即可。所以我们代码如下:

图片

如上图,我直接返回了这个html。

现在我们需要的就是让我们unittest自动生成的这些报告都以大用例的id来命名吧,这也就说了回来,我们一开始要对unittest的run函数传递数据,除了各种小步骤之外,还要传递大数据的id name等。以便生成清晰的报告。

所以这么改 Run_Case函数:

图片

然后去unittest的文件的run函数接收好这俩个参数:

图片

然后再想办法 拼接到生成的报告文件的名称中:

图片

好,我们重启服务,刷新页面再测试:

测试结果显示,这个大用例id为1的 报告生成成功了!

图片

然后我们再点击 页面上的查看报告按钮,看看能否展示:

发现也可以正常展示了!

图片

好了本节内容到此为止。

大家不要忘记分享,点赞,在看 这些啊~