巧用PyUnit中unittest特性解决接口测试产生脏数据问题

一、背景

测试数据创建后需要对其删除,不然可能产生脏数据,对开发和测试、生产环境造成一定影响。其接口框架是基于Python,API规范基于REST。

二、产生原因

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

(2)改进后:在setUp中初始化资源id=None,每次创建资源时会生产一个资源id,然后在tearDown中,判断资源的id是否为None,if不为None,then delete 资源并将资源id重新赋值为None。这样不管有没有执行成功,最终都会在tearDown中删除被创建成功的资源,初始化工作放在setUp中。

三、代码对比

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

def test_konwledges_check_by_list_ok(self):

"""

lc知识点API:成功创建2个知识点后,批量查询知识点详细信息\

"""

title = 'knowledges'

flag = 0

response = self.knowledge.add_knowledges(title, flag)

message = "创建知识点接口返回失败"

code = 200

data = self.rest_o.parse_response(response, code, message)

self.knowledges_id1 = data['identifier']

response = self.knowledge.add_knowledges(title, flag)

message = "创建知识点接口返回失败"

code = 200

data = 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 = 200

data = self.rest_o.parse_response(response, code, message)

print data

assert data[self.knowledges_id1]

assert data[self.knowledges_id2]

self.knowledge.delete_konwledges(knowledge_id1)#放在测试用例中删除

self.knowledge.delete_konwledges(knowledge_id2)#放在测试用例中删除

(2)改进后:

a.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 = None

self.knowledges_id1 = None

self.knowledges_id2 = None

self.knowledge_relation_id = None

def tearDown(self):#判断资源的id是否为None,if不为None,then delete 资源并将资源id重新赋值为None,这样不管有没有执行成功,最终都会在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 '------------------------------------------------------'

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

def test_konwledges_check_by_list_ok(self):

"""

lc知识点API:成功创建2个知识点后,批量查询知识点详细信息\

"""

title = 'knowledges'

flag = 0

response = self.knowledge.add_knowledges(title, flag)

message = "创建知识点接口返回失败"

code = 200

data = self.rest_o.parse_response(response, code, message)

self.knowledges_id1 = data['identifier']

response = self.knowledge.add_knowledges(title, flag)

message = "创建知识点接口返回失败"

code = 200

data = 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 = 200

data = self.rest_o.parse_response(response, code, message)

print data

assert data[self.knowledges_id1]

assert data[self.knowledges_id2]

#注释原在测试用例中删除的代码

#self.knowledge.delete_konwledges(knowledge_id1)

#self.knowledge.delete_konwledges(knowledge_id2)

四、总结

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

版权声明:本文为博主原创文章,未经博主允许不得转载。

python中接口测试垃圾数据如何清理_巧用PyUnit中unittest特性解决接口测试产生脏数据问题...相关推荐

  1. 大数据相关从业_如何在组织中以数据从业者的身份闪耀

    大数据相关从业 Build bridges, keep the maths under your hat and focus on serving. 架起桥梁,将数学放在脑海中,并专注于服务. 通过协 ...

  2. python爬虫爬取中国天气网_【实战】中国天气网爬虫之华北城市数据爬取

    概述: 在人工智能来临的今天,数据显得格外重要.在互联网的浩瀚大海洋中,隐藏着无穷的数据和信息.因此学习网络爬虫是在今天立足的一项必备技能.本路线专门针对想要从事Python网络爬虫的同学而准备的,并 ...

  3. es数据定时清理_一种基于ELK的数据自动清理方法与流程

    本发明涉及涉及ELK.Shell.Kafka.Freemarker等技术领域,尤其涉及一种基于ELK的数据自动清理方法. 背景技术: ElasticSearch是一个基于Lucene的全文搜索服务.它 ...

  4. jeesite如何已生成数据的数据源_如何在postman中自动生成接口请求数据,这个功能你需要知道,可结合浏览器和两大抓包工具使用...

    在做接口调试或测试时,请求中的每个参数都要按照接口文档填写到postman的对应位置中,很是麻烦.那是否有这样一个功能?可以帮我们自动生成接口数据,无需修改,直接发送请求就可以呢. 这里面我们需要借助 ...

  5. python有像sumif的函数吗_在WPS表格中如何巧用SUMIF函数筛选后求和销售业绩

    在财务数据统计中,有时要对部分或特殊条件的数据进行筛选求和,例如工资表中同人名的奖金总和;或销售表中同产品的销量总和等.在财务数据统计中,有时要对部分或特殊条件的数据进行筛选求和,例如工资表中同人名的 ...

  6. sessionlistener方法中获取session中存储的值报空指针异常_从Golang实践中得到的教训...

    当使用复杂的分布式系统时,可能会遇到并发处理的需求.我们知道golang的协程是处理并发的利器之一,加上Golang为静态类型和编译型使得其在企业中使用越来越广泛.Mode.net公司系统每天要处理实 ...

  7. 拟合一条曲线_毕业季:6 款曲线,解决 99% 的 ELISA 数据拟合难题

    毕业季:6 款曲线,解决 99% 的 ELISA 数据拟合难题 我们通常 ELISA 实验完成后,后面最重要的工作就是如何把 OD 值转化为浓度,以达到分析数据的目的.样本浓度的分析是根据标准品数据所 ...

  8. java中demo接人_return的用法_如何理解java中return的用法?

    C语言中return用法?(请熟练者进) return是返回值,这个返回值是和函数的类型有关的,函数的类型是什么,他的返回值就是什么 比方主函数intmain() {}这里就必须有一个return,只 ...

  9. 爬取三千条数据需要多久_存储-性能,IOPS,带宽,吞吐量,1TB数据需要多久写完...

    让我们先看一下这三个概念: IOPS (Input/Output Per Second) 即每秒的输入输出量(或读写次数),是衡量存储介质性能的主要指标之一.IOPS是指每秒钟系统能处理的读写请求数量 ...

最新文章

  1. 热门专业没那么难,文科生打开统计学的正确方式!
  2. 设计模式第七讲-责任链模式
  3. jquery插件的写法
  4. 轻松构建基于 Serverless 架构的弹性高可用音视频处理系统
  5. Python容器类型公共方法汇总
  6. 【计算机基础】存储器层次 Memory hierarchy
  7. JavaWeb课程复习资料(四)——创建Servlet
  8. KYOCERA Programming Contest 2021(AtCoder Beginner Contest 200)题解
  9. 王道考研 计算机网络2 标准化工作
  10. iPhone X 再曝新 Bug:电话无法接听!
  11. W5500连不上的问题
  12. 基于Zabbix的校园网核心监控系统设计与实现
  13. mp3处理工具(mp3agic)
  14. 笔记本当服务器显示器怎么连接,笔记本当主机显示器的设置方法
  15. 计算机教研组活动简讯,思中信息技术组教研活动简报
  16. Sentinel流量控制流控规则
  17. win10开机系统恢复(WinRE)中找不到系统恢复映像或功能不全的解决方法
  18. 为何excel中数据无法计算机,Excel中数字无法正常求和怎么办?
  19. 学习python的编程语言
  20. matplotlib的基本用法(十三)——figure绘制多图

热门文章

  1. Android 位置服务——BaiduLocation的使用
  2. bootstrap-daterangepicker插件运用
  3. linux的几个文本内容查看命令小结
  4. linux内核同步机制相关收集
  5. 【BZOJ 3191】[JLOI2013]卡牌游戏
  6. 对一个 复杂的json结果进行取值的例子
  7. 构建iOS风格移动Web应用程序的8款开发框架
  8. C++ 0x 使用可变参数模板类 实现 C# 的委托机制
  9. Windows Phone 资源管理与换肤思考
  10. MySQL索引背后的数据结构及算法原理(转)