利用unittest测试框架可以编写测试用例,执行方式分两大类:利用main方法和利用testsuite,其中利用测试套件来组织测试用例可以有4种写法。

在此之前,先了解几个概念

  • TestCase:所有测试用例的基本类,给一个测试方法的名字,就会返回一个测试用例实例;
  • TestSuite:组织测试用例的实例,支持测试用例的添加和删除,最终将传递给  testRunner进行测试执行;
  • TextTestRunner:进行测试用例执行的实例,其中Text的意思是以文本形式显示测试结果。测试的结果会保存到TextTestResult实例中,包括运行了多少测试用例,成功了多少,失败了多少等信息;
  • TestLoader:用来加载TestCase到TestSuite中的,其中有几个  loadTestsFrom__()方法,就是从各个地方寻找TestCase,创建它们的实例,然后add到TestSuite中,再返回一个TestSuite实例;
  • defaultTestLoader.discover:将discover方法筛选出来的用例,循环添加到测试套件中,打印出的用例信息会递增

方法一:通过unittest.main()来执行测试用例的方式

import unittest

class TestStringMethods(unittest.TestCase):

    def setUp(self):
unittest.TestCase.setUp(self) def tearDown(self):
unittest.TestCase.tearDown(self) def test_upper(self):
self.assertEqual('foo'.upper(), 'FOO') def test_isupper(self):
self.assertTrue('FOO'.isupper())
self.assertFalse('Foo'.isupper()) def test_split(self):
s = 'hello world'
self.assertEqual(s.split(), ['hello','world'])
with self.assertRaises(TypeError):
s.split(2) if __name__ == "__main__":
#import sys;sys.argv = ['', 'Test.testName']
unittest.main()

unittest.main()会去查找所有以test开头的方法,并把它们当做一个个测试用例

方法二:用测试套件

import unittest

class TestStringMethods(unittest.TestCase):

    def setUp(self):
unittest.TestCase.setUp(self) def tearDown(self):
unittest.TestCase.tearDown(self) def test_upper(self):
self.assertEqual('foo'.upper(), 'FOO') def test_isupper(self):
self.assertTrue('FOO'.isupper())
self.assertFalse('Foo'.isupper()) def test_split(self):
s = 'hello world'
self.assertEqual(s.split(), ['hello','world'])
with self.assertRaises(TypeError):
s.split(2) def suite(): suite = unittest.TestSuite()
suite.addTest(TestStringMethods('test_upper'))
suite.addTest(TestStringMethods('test_isupper'))
unittest.TextTestRunner(verbosity=2).run(suite) if __name__ == "__main__": suite()
#import sys;sys.argv = ['', 'Test.testName']
# unittest.main()

方法三:用TestLoader

import unittest
class TestCase1(unittest.TestCase):
#def setUp(self):
#def tearDown(self):
def testCase1(self):
print 'aaa'
def testCase2(self):
print 'bbb' class TestCase2(unittest.TestCase):
#def setUp(self):
#def tearDown(self):
def testCase1(self):
print 'aaa1'
def testCase2(self):
print 'bbb1' if __name__ == "__main__":
#此用法可以同时测试多个类
suite1 = unittest.TestLoader().loadTestsFromTestCase(TestCase1)
suite2 = unittest.TestLoader().loadTestsFromTestCase(TestCase2)
suite = unittest.TestSuite([suite1, suite2])
unittest.TextTestRunner(verbosity=2).run(suite)

方法四:测试套件的一种变性,和方法二差不多

import unittest

class TestStringMethods(unittest.TestCase):

    def setUp(self):
unittest.TestCase.setUp(self) def tearDown(self):
unittest.TestCase.tearDown(self) def test_upper(self):
self.assertEqual('foo'.upper(), 'FOO') def test_isupper(self):
self.assertTrue('FOO'.isupper())
self.assertFalse('Foo'.isupper()) def test_split(self):
s = 'hello world'
self.assertEqual(s.split(), ['hello','world'])
with self.assertRaises(TypeError):
s.split(2) def suite(): tests = ['test_upper','test_isupper']
suite = unittest.TestSuite(map(TestStringMethods,tests))
unittest.TextTestRunner(verbosity=2).run(suite) if __name__ == "__main__": suite()
#import sys;sys.argv = ['', 'Test.testName']
# unittest.main()

方法五:用discover

import unittest

class TestStringMethods(unittest.TestCase):

    def setUp(self):
unittest.TestCase.setUp(self) def tearDown(self):
unittest.TestCase.tearDown(self) def test_upper(self):
self.assertEqual('foo'.upper(), 'FOO') def test_isupper(self):
self.assertTrue('FOO'.isupper())
self.assertFalse('Foo'.isupper()) def test_split(self):
s = 'hello world'
self.assertEqual(s.split(), ['hello','world'])
with self.assertRaises(TypeError):
s.split(2) def suite(): suite=unittest.TestSuite()
discover=unittest.defaultTestLoader.discover(casepath, pattern='test_*.py', top_level_dir=None)
#将discover方法筛选出来的用例,循环添加到测试套件中,打印出的用例信息会递增
for test_case in discover:
suite.addTests(test_case)
print(suite)
return suite if __name__ == "__main__": all_test_cases = suite()
unittest.TextTestRunner().run(all_test_cases)
#import sys;sys.argv = ['', 'Test.testName']
# unittest.main()

python利用unittest测试框架组织测试用例的5种方法的更多相关文章

  1. Python单元测试unittest测试框架

    本文的主题是自动化测试框架的实现,在实现之前,先了解一下关于unittest模块的相关知识: Python中有一个自带的单元测试框架是unittest模块,用它来做单元测试,它里面封装好了一些校验返回 ...

  2. 基于python的unittest测试框架集成到jenkins(Mac)

    1.jenkins部分 1.1 安装jenkins jenkins下载地址:https://jenkins.io/download/ 安装步骤,疯狂点击下一步 1.2 打开jenkins服务 在浏览器 ...

  3. 基于Python的接口自动化-unittest测试框架和ddt数据驱动

    引言 在编写接口自动化用例时,我们一般针对一个接口建立一个.py文件,一条接口测试用例封装为一个函数(方法),但是在批量执行的过程中,如果其中一条出错,后面的用例就无法执行,还有在运行大量的接口测试用 ...

  4. Python接口测试实战3(下)- unittest测试框架

    如有任何学习问题,可以添加作者微信:lockingfree 课程目录 Python接口测试实战1(上)- 接口测试理论 Python接口测试实战1(下)- 接口测试工具的使用 Python接口测试实战 ...

  5. Python 下的unittest测试框架

    unittest测试框架,直接上图吧: data:数据:主要格式为CSV:读取方式:csv.reade: public:封装的模块:通用的模块单独封装,所需参数设置为变量: testcase:测试用例 ...

  6. <day002>Selenium基本操作+unittest测试框架

    任务1:Selenium基本操作 from selenium import webdriver # 通用选择 from selenium.webdriver.common.by import By # ...

  7. python获取字母在字母表对应位置的几种方法及性能对比较

    python获取字母在字母表对应位置的几种方法及性能对比较 某些情况下要求我们查出字母在字母表中的顺序,A = 1,B = 2 , C = 3, 以此类推,比如这道题目 https://project ...

  8. python实例编写(6)--引入unittest测试框架,构造测试集批量测试(以微信统一管理平台为例)

    ---恢复内容开始--- 一.python单元测试实例介绍 unittest框架又叫PyUnit框架,是python的单元测试框架. 先介绍一个普通的单元测试(不用unittest框架)的实例: 首先 ...

  9. python利用unittest进行测试用例执行的几种方式

      利用python进行测试时,测试用例的加载方式有2种:  一种是通过unittest.main()来启动所需测试的测试模块:  一种是添加到testsuite集合中再加载所有的被测试对象,而tes ...

随机推荐

  1. 【ASP.NET Core】运行原理(2):启动WebHost

    本系列将分析ASP.NET Core运行原理 [ASP.NET Core]运行原理[1]:创建WebHost [ASP.NET Core]运行原理[2]:启动WebHost [ASP.NET Core ...

  2. .net如何发送格式化的文本内容

    MailMessage mailMessage = new MailMessage();ArrayList attachsendObject = new ArrayList();string mail ...

  3. Kali Linux 下安装中文版输入法

    1.更新软件源: 修改sources.list文件: vim /etc/apt/sources.list 或者 leafpad /etc/apt/sources.list 然后选择添加以下源: deb ...

  4. MySQL事务及其实现

    事务定义 事务是访问并更新数据库中各个数据项的一个程序执行单元.在事务操作中,要不都做修改,要么都不做. 事务特性 事务具有ACID四个特性,分别是:原子性(Atomicity).一致性(Consis ...

  5. Docker--Dockerfile引用及指令集的功能用法

    Dockerfile引用的官网文档:https://docs.docker.com/engine/reference/builder/ 编写Dockerfiles的最佳实践的官网文档:https:// ...

  6. Centos7下使用RDO方式安装openstack-r版

    一.前言 OpenStack是一个开源的云计算管理平台项目,OpenStack支持几乎所有类型的云环境,项目目标是提供实施简单.可大规模扩展.丰富.标准统一的云计算管理平台.OpenStack通过各种 ...

  7. Django_cookie+session

    一.cookie和session介绍 cookie 由服务器产生内容,浏览器收到请求后保存在本地:当浏览器再次访问时,浏览器会自动带上cookie,这样服务器就能通过cookie的内容来判断这个是“谁 ...

  8. Invalid bound statement (not found): com.example.managerdemo.mapper.SingleTableMapper.selectAllValuesByConditionsNoPage

    报Invalid bound statement (not found): com.example.managerdemo.mapper.SingleTableMapper.selectAllValu ...

  9. 20172324《Java程序设计》第3周学习总结

    20172324<Java程序设计>第3周学习总结 教材学习内容总结 随机数,记住要返回的是指定的字符前一个. String类型的一些用法,例如concat(连接),toUpperCase ...

  10. web04-LoginServlet

    电影网站:www.aikan66.com项目网站:www.aikan66.com游戏网站:www.aikan66.com图片网站:www.aikan66.com书籍网站:www.aikan66.com ...