我们日常项目中的接口测试案例肯定不止一个,当案例越来越多时我们如何管理这些批量案例?如何保证案例不重复?如果案例非常多(成百上千,甚至更多)时如何保证案例执行的效率?如何做(批量)测试数据的管理?如何做到数据与脚本分离?

  以上这些问题才是我们自动化测试中要重点考虑的问题,单个用例其实并不难。

来看一下在unittest框架中如何管理批量案例:

一、手工加载批量用例:

  1. # -*- coding:utf-8 -*-
  2. # 批量用例执行--手工加载
  3.  
  4. import unittest
  5.  
  6. class TestOne(unittest.TestCase):
  7. def setUp(self):
  8. print '\ncases before'
  9. pass
  10.  
  11. def test_add(self):
  12. '''test add method'''
  13. print 'add...'
  14. a = 3 + 4
  15. b = 7
  16. self.assertEqual(a, b)
  17.  
  18. def test_sub(self):
  19. '''test sub method'''
  20. print 'sub...'
  21. a = 10 - 5
  22. b = 5
  23. self.assertEqual(a, b)
  24.  
  25. def tearDown(self):
  26. print 'case after'
  27. pass
  28.  
  29. if __name__ == '__main__':
  30. # 1、构造用例集
  31. suite = unittest.TestSuite()
  32.  
  33. # 2、执行顺序是安加载顺序:先执行test_sub,再执行test_add
  34. suite.addTest(TestOne("test_sub"))
  35. suite.addTest(TestOne("test_add"))
  36.  
  37. # 3、实例化runner类
  38. runner = unittest.TextTestRunner()
  39. # 4、执行测试
  40. runner.run(suite)

二、自动加载批量用例:

  1. # -*- coding:utf-8 -*-
  2. # 批量用例执行--自动加载
  3. import unittest
  4. import os
  5.  
  6. class TestOne(unittest.TestCase):
  7. def setUp(self):
  8. print '\ncases before'
  9. pass
  10.  
  11. def test_add(self):
  12. '''test add method'''
  13. print 'add...'
  14. a = 3 + 4
  15. b = 7
  16. self.assertEqual(a, b)
  17.  
  18. def test_sub(self):
  19. '''test sub method'''
  20. print 'sub...'
  21. a = 10 - 5
  22. b = 5
  23. self.assertEqual(a, b)
  24.  
  25. def tearDown(self):
  26. print 'case after'
  27. pass
  28.  
  29. if __name__ == '__main__':
  30. # 1、设置待执行用例的目录
  31. test_dir = os.path.join(os.getcwd())
  32.  
  33. # 2、自动搜索指定目录下的cas,构造测试集,执行顺序是命名顺序:先执行test_add,再执行test_sub
  34. discover = unittest.defaultTestLoader.discover(test_dir, pattern='test_*.py')
  35.  
  36. # 实例化TextTestRunner类
  37. runner = unittest.TextTestRunner()
  38.  
  39. # 使用run()方法运行测试套件(即运行测试套件中的所有用例)
  40. runner.run(discover)

以上只是解决了如何管理批量案例的问题,其它的问题如何做(批量)测试数据的管理?如何做到数据与脚本分离?后续在介绍。

python接口自动化测试(七)-unittest-批量用例管理的更多相关文章

  1. python接口自动化测试(六)-unittest-单个用例管理

    前面五节主要介绍了环境搭建和requests库的使用,可以使用这些进行接口请求的发送.但是如何管理接口案例?返回结果如何自动校验?这些内容光靠上面五节是不行的,因此从本节开始我们引入python单元测 ...

  2. python接口自动化测试七:获取登录的Cookies

    python接口自动化测试七:获取登录的Cookies,并关联到下一个请求   获取登录的cookies:loginCookies = r.cookies 把获取到的cookies传入请求:cooki ...

  3. python 接口自动化测试(六)使用unittest 批量用例管理

    我们日常项目中的接口测试案例肯定不止一个,当案例越来越多时我们如何管理这些批量案例?如何保证案例不重复?如果案例非常多(成百上千,甚至更多)时如何保证案例执行的效率?如何做(批量)测试数据的管理?如何 ...

  4. 记录python接口自动化测试--利用unittest生成测试报告(第四目)

    前面介绍了是用unittest管理测试用例,这次看看如何生成html格式的测试报告 生成html格式的测试报告需要用到 HTMLTestRunner,在网上下载了一个HTMLTestRunner.py ...

  5. python接口自动化测试七:获取登录的Cookies,并关联到下一个请求

    获取登录的cookies:loginCookies = r.cookies 把获取到的cookies传入请求:cookies=loginCookies 此方法需每一次都调用登录方法,并且每一次发送请求 ...

  6. Python接口自动化测试01

    1)环境准备: 接口测试的方式有很多,比如可以用工具(jmeter,postman)之类,也可以自己写代码进行接口测试,工具的使用相对来说都比较简单,重点是要搞清楚项目接口的协议是什么,然后有针对性的 ...

  7. Python接口自动化测试框架实战 从设计到开发

    第1章 课程介绍(不要错过)本章主要讲解课程的详细安排.课程学习要求.课程面向用户等,让大家很直观的对课程有整体认知! 第2章 接口测试工具Fiddler的运用本章重点讲解如何抓app\web的htt ...

  8. 基于Python接口自动化测试框架+数据与代码分离(进阶篇)附源码

    引言 在上一篇<基于Python接口自动化测试框架(初级篇)附源码>讲过了接口自动化测试框架的搭建,最核心的模块功能就是测试数据库初始化,再来看看之前的框架结构: 可以看出testcase ...

  9. python接口自动化测试二十七:密码MD5加密 ''' MD5加密 ''' # 由于MD5模块在python3中被移除 # 在python3中使用hashlib模块进行md5操作 import hashlib # 待加密信息 str = 'asdas89799,.//plrmf' # 创建md5对象 hl = hashlib.md5() # Tips # 此处必须声明encode # 若写法为

    python接口自动化测试二十七:密码MD5加密   ''' MD5加密 '''# 由于MD5模块在python3中被移除# 在python3中使用hashlib模块进行md5操作import has ...

随机推荐

  1. web发展阶段简介

     web1.0.web2.0和web3.0的区别前言: 其实并没有什么所谓的2.0.3.0,因为你没法准确的界定它是什么样的应用,也没法界定它是什么时候开始的,什么时候结束,它只是互联网本身发展的一种 ...

  2. ClassLoader家族

    DexClassLoader可以加载外部的dex,而PathClassLoader只能加载内部的dex 双亲委托 ClassLoader(ClassLoader parentLoader,boolea ...

  3. Codeforces 1096D Easy Problem 【DP】

    <题目链接> 题目大意: 给你一个字符串,每个字符有权值,问现在删除字符串中的字符使其中没有"hard"的最小代价是多少. 解题分析: 用DP来求解:        转 ...

  4. 有关python 函数参数

    # def foo(x):# print(x)### foo(1)# foo('a')# foo({'a':2}) #形参与实参:# def foo(x,y): #x=1,y=2# return x+ ...

  5. Vue实现用户自定义上传头像裁剪

    使用技术: vue.js2.0.cropperjs.canvas <template>   <div id="app">     <div id=&q ...

  6. Java笔记(九)EnumMap & EnumSet

    EnumMap & EnumSet 一.EnumMap 一)基本用法 public static Map<Size, Integer> countBySize(List<Cl ...

  7. 详解~实现Runnable方法创建线程之为什么要将Runnable接口的子类对象传递给Thread的构造函数

    /** * @author zhao * @TIME 0419 22:56 End *定义线程的第二种方法:实现Runnable接口(不考虑安全问题) *步骤:1,定义一个子类实现Runnable接口 ...

  8. .ftl文件介绍

    freemarker的文件一般以后缀ftl,ftl文件的头上要写<#assign ww=JspTaglibs["/WEB-INF/webwork.tld"] /这样才能在ft ...

  9. php 通用数据库类

    <?php // 数据库连接类 class DB{ //私有的属性 private static $dbcon=false; private $host; private $port; priv ...

  10. 轻松掌握Redux-Action使用方法

    轻松掌握Redux-Action使用方法 Redux-Action主要有两个方法,createAction和createAction,只要掌握了这两个方法就会了redux-action的使用. cre ...