巧妙解决接口测试产生脏数据问题

测试数据创建后需要对其删除,不然可能产生脏数据,对开发和测试、生产环境造成一定影响。

其接口框架是基于Python,API规范基于REST。

产生原因

改进前:清除资源的操作放在每个正向测试用例里,没有在setUp和tearDown中删除。

改进后:在setUp中初始化资源id=None,每次创建资源时会生产一个资源id,然后在tearDown中,判断资源的id是否为None,if不为None,then delete 资源并将资源id重新赋值为None。

这样不管有没有执行成功,最终都会在tearDown中删除被创建成功的资源,初始化工作放在setUp中。

代码对比

改进前:清除资源的操作放在每个正向测试用例里,没有在setUp和tearDown中删除。代码如下:

     def test_konwledges_check_by_list_ok(self):"""lc知识点API:成功创建2个知识点后,批量查询知识点详细信息\"""title = 'knowledges'flag = 0response = self.knowledge.add_knowledges(title, flag)message = "创建知识点接口返回失败"code = 200data = self.rest_o.parse_response(response, code, message)self.knowledges_id1 = data['identifier']response = self.knowledge.add_knowledges(title, flag)message = "创建知识点接口返回失败"code = 200data = self.rest_o.parse_response(response, code, message)self.knowledges_id2 = data['identifier']knowledge_id_str = [self.knowledges_id1, self.knowledges_id2]response = self.knowledge.check_konwledges_details_by_list(knowledge_id_str)#print 'response: ' + str(response)message = "批量查询知识点详细信息接口返回失败"code = 200data = self.rest_o.parse_response(response, code, message)print dataassert data[self.knowledges_id1]assert data[self.knowledges_id2]self.knowledge.delete_konwledges(knowledge_id1)#放在测试用例中删除self.knowledge.delete_konwledges(knowledge_id2)#放在测试用例中删除

改进后:

setUp和tearDown中改进:

    def setUp(self):print 'start run KnowledgeTest(知识点接口)......'self.knowledge = Knowledge()self.lessons = Lessons()self.instructional = Instructional(id)self.teaching_material = TeachingMaterial()self.rest_o = CoRestful.Restful()self.rand_o = CoRand()self.knowledges_id = Noneself.knowledges_id1 = Noneself.knowledges_id2 = Noneself.knowledge_relation_id = Nonedef tearDown(self):
        #判断资源的id是否为None,if不为None,then delete 资源并将资源id重新赋值为None<span style="font-family: Arial, Helvetica, sans-serif;">,</span>这样不管有没有执行成功,最终都会在tearDown中删除被创建成功的资源if self.knowledge_relation_id != None:self.knowledge.delete_relation(self.knowledge_relation_id)if self.knowledges_id2 != None:self.knowledge.delete_konwledges(self.knowledges_id2)if self.knowledges_id1 != None:self.knowledge.delete_konwledges(self.knowledges_id1)if self.knowledges_id != None:self.knowledge.delete_konwledges(self.knowledges_id)print '------------------------------------------------------'

测试用例中将其删除代码注释:

def test_konwledges_check_by_list_ok(self):"""lc知识点API:成功创建2个知识点后,批量查询知识点详细信息\"""title = 'knowledges'flag = 0response = self.knowledge.add_knowledges(title, flag)message = "创建知识点接口返回失败"code = 200data = self.rest_o.parse_response(response, code, message)self.knowledges_id1 = data['identifier']response = self.knowledge.add_knowledges(title, flag)message = "创建知识点接口返回失败"code = 200data = self.rest_o.parse_response(response, code, message)self.knowledges_id2 = data['identifier']knowledge_id_str = [self.knowledges_id1, self.knowledges_id2]response = self.knowledge.check_konwledges_details_by_list(knowledge_id_str)#print 'response: ' + str(response)message = "批量查询知识点详细信息接口返回失败"code = 200data = self.rest_o.parse_response(response, code, message)print dataassert data[self.knowledges_id1]assert data[self.knowledges_id2]#注释原在测试用例中删除的代码#self.knowledge.delete_konwledges(knowledge_id1)#self.knowledge.delete_konwledges(knowledge_id2)

总结

发现问题要多思考,并努力把其解决。

最后: 为了回馈铁杆粉丝们,我给大家整理了完整的软件测试视频学习教程,朋友们 如果需要可以自行免费领取 【保证100%免费】
在这里插 入图片描述

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/498696.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C++11】C++11新特性(下)

1、类的新功能 namespace flash {class string{public:// 构造函数string(const char* str ""):_size(strlen(str)), _capacity(_size){//cout << "string(char* str)" << endl;_str new char[_capacity 1];strcpy(_str, str);}// 交换两个…

【AI Agent系列】【MetaGPT多智能体学习】3. 开发一个简单的多智能体系统,兼看MetaGPT多智能体运行机制

本系列文章跟随《MetaGPT多智能体课程》&#xff08;https://github.com/datawhalechina/hugging-multi-agent&#xff09;&#xff0c;深入理解并实践多智能体系统的开发。 本文为该课程的第四章&#xff08;多智能体开发&#xff09;的第一篇笔记。主要记录下多智能体的运行…

java -进行堆转储文件分析

文章目录 前言java -进行堆转储文件分析1. 首先在window上主动生成堆转储文件2. 获取堆转储文件的方式3. 堆转储文件分析 前言 如果您觉得有用的话&#xff0c;记得给博主点个赞&#xff0c;评论&#xff0c;收藏一键三连啊&#xff0c;写作不易啊^ _ ^。   而且听说点赞的人…

【c语言】探索结构体---解锁更多选择

前言 结构体属于自定义类型的一种&#xff0c;这增加了我们写代码的选择&#xff0c;跟着我的脚步一起来探索结构体吧~ 欢迎关注个人主页&#xff1a;逸狼 创造不易&#xff0c;可以点点赞吗~ 如有错误&#xff0c;欢迎指出~ 认识结构体 结构是⼀些值的集合&#xff0c;这些值…

java找工作之JavaWeb(一)

JavaWeb 一个web应用有多部份组成&#xff08;静态web&#xff0c;动态web&#xff09; html&#xff0c;css&#xff0c;jsjsp&#xff0c;servletjava程序jar包配置文件(Properties) web应用程序编写完毕后&#xff0c;若想提供给外界访问&#xff0c;需要一个服务器来统一…

[ffmpeg] x264 配置参数解析

背景 创建 x264 编码器后&#xff0c;其有一组默认的编码器配置参数&#xff0c;也可以根据需要修改参数&#xff0c;来满足编码要求。 具体参数 可修改的参数&#xff0c;比较多&#xff0c;这边只列举一些常用的。 获取可以配置的参数 方式1 查看 ffmpeg源码 libx264.c…

动态规划|【斐波那契数列模型 】|面试题08.01三步问题

目录 题目 思路 普通思路 动态规划思路 1.状态表示 2.状态转移方程 3.初始化 4.填表顺序 5.返回值 代码 空间优化 题目 题目链接 面试题 08.01. 三步问题https://leetcode.cn/problems/three-steps-problem-lcci/ 三步问题。有个小孩正在上楼梯&#xff0c;楼梯有n…

【软考高项】【计算专题】- 6 - 成本类 - 挣值管理

目录 一、知识点 1、基础概念 1.1 教材定义 1.2 理解方式 方式一&#xff1a;使用公式理解 方式二&#xff1a;使用语言描述 2、总结 2.1 三个参数 2.2 四个指标 2.3 其他关键参数 二、真题举例 高级2014年下半年案例分析试题 【问题1】 【问题2】 【问题3】 一…

Java反射机制底层原理

反射机制 这篇文章我是参考了Java 中的反射机制&#xff08;两万字超全详解&#xff09;_java反射-CSDN博客 然后我在这里做一下总结&#xff0c;因为原文章真的很好&#xff0c;我才疏学浅没什么进行补充&#xff0c;只能做出自己的总结并且写一下自己对这个的理解。 原理&…

吴恩达机器学习全课程笔记第四篇

目录 前言 P61-P68 激活函数 Softmax算法 P69-P73 Adam算法 更多类型的层 模型评估 P74-P79 偏差和方差 建立表现基准 学习曲线 偏差和方差与神经网络 前言 这是吴恩达机器学习笔记的第四篇&#xff0c;第三篇笔记请见&#xff1a; 吴恩达机器学习全课程笔记第…

android开发电子书,android基础编程

内存泄漏是什么&#xff1f; 内存泄漏即 ML &#xff08;Memory Leak&#xff09; 指 程序在申请内存后&#xff0c;当该内存不需再使用 但 却无法被释放 & 归还给 程序的现象 内存泄漏有哪些情况&#xff0c;对应的解决方案&#xff1f; 内存泄漏的原因归根到底就是当需…

fastAdmin表格列表的功能

更多文章&#xff0c;请关注&#xff1a;fastAdmin后台功能详解 | 夜空中最亮的星 FastAdmin是一款基于ThinkPHP5Bootstrap的极速后台开发框架。优点见开发文档 介绍 - FastAdmin框架文档 - FastAdmin开发文档 在这里上传几张优秀的快速入门图: 一张图解析FastAdmin中的表格列…