Test Case、Test Suite、Test Runner、Test Fixture

  • Test Case:单个测试用例
  • Test Suite:测试组合。可以把多个测试用例集合在一起执行。
  • Test Runner:通过Test Runner的run()方法来执行test suite/test case,可以使用图形界面、文本界面,或返回一个特殊的值来表示测试执行的结果。
  • Test Fixture:测试用例环境的搭建和销毁。如果测试用例中需要访问数据库,可以在setUp中建立数据库连接,在tearDown中清除数据库产生的数据,并断开连接

1.单元测试

calculator.py

class Count:
def __init__(self,a,b):
self.a = a
self.b = b
def add(self):
return self.a + self.b
def sub(self):
return self.a - self.b

test.py

from book.calculator import  Count
import unittest
class TestCount(unittest.TestCase):
def setUp(self):
print("test start")
def test_add(self):
j = Count(2,3)
self.assertEqual(j.add(),5)
def test_add2(self):
j = Count(54,49)
self.assertEqual(j.add(),103)
def tearDown(self):
print("test end")
if __name__=="__main__":
#__name__是内置属性,使用__main__就是直接使用。
#main()方法可以将一个单元测试模块变成可以直接运行的测试脚本,执行所有以test命令开头的方法
unittest.main()

2.使用Test Suite组织测试用例,Test Runner运行

2.1基于1中calculator.py执行测试集

test.py

from calculator import  Count
import unittest
class TestCount(unittest.TestCase):
def setUp(self):
print("test start")
def test_add(self):
j = Count(2,3)
self.assertEqual(j.add(),5)
print("test_add执行完毕")
def test_add2(self):
j = Count(54,49)
self.assertEqual(j.add(),103)
print("test_add2执行完毕")
def tearDown(self):
print("test end")
if __name__=="__main__":
#构造测试集
suite = unittest.TestSuite()
suite.addTest(TestCount("test_add2"))
#执行测试集
runner = unittest.TextTestRunner()
runner.run(suite)


### 2.2编写新的计算类,并组织测试集

### 2.3基于2.2,修改test.py,将测试加减的用例分离

### 2.4基于2.2,如果每个类的初始化和回复一样,可以封装setUp和tearDown

test.py

from calculator import  Count
import unittest
class MyTest(unittest.TestCase):
def setUp(self):
print("test start")
def tearDown(self):
print("test end")
class TestAdd(MyTest):
def test_add(self):
j = Count(2,3)
self.assertEqual(j.add(),5)
print("test_add执行完毕")
def test_add2(self):
j = Count(54,49)
self.assertEqual(j.add(),103)
print("test_add2执行完毕") class TestSub(MyTest):
def test_sub(self):
j = Count(4,1)
self.assertEqual(j.sub(),3)
print("test_sub执行完毕")
def test_sub2(self):
j = Count(5,9)
self.assertEqual(j.sub(),-4)
print("test_sub2执行完毕") if __name__=="__main__":
#构造测试集
suite = unittest.TestSuite()
suite.addTest(TestAdd("test_add2"))
suite.addTest(TestSub("test_sub2"))
#执行测试
runner = unittest.TextTestRunner()
runner.run(suite)

2.5基于2.3,修改test.py,将测试加减的用例分离到不同的脚本中

calculator.py

class Count:
def __init__(self,a,b):
self.a = int(a)
self.b = int(b)
def add(self):
return self.a + self.b
def sub(self):
return self.a - self.b

testadd.py

from calculator import  Count
import unittest
class TestAdd(unittest.TestCase):
def setUp(self):
print("test add start")
def test_add(self):
j = Count(2,3)
self.assertEqual(j.add(),5)
print("test_add执行完毕")
def test_add2(self):
j = Count(54,49)
self.assertEqual(j.add(),103)
print("test_add2执行完毕")
def tearDown(self):
print("test add end")
if __name__=="__main__":
unittest.main()

testsub.py

from calculator import Count
import unittest
class TestSub(unittest.TestCase):
def setUp(self):
print("test sub start")
def test_sub(self):
j = Count(4,1)
self.assertEqual(j.sub(),3)
print("test_sub执行完毕")
def test_sub2(self):
j = Count(5,9)
self.assertEqual(j.sub(),-4)
print("test_sub2执行完毕")
def tearDown(self):
print("test sub end")
if __name__=="__main__":
unittest.main()

runtest.py

import unittest
from testadd import TestAdd
from testsub import TestSub
suite = unittest.TestSuite()
suite.addTest(TestAdd("test_add"))
suite.addTest(TestAdd("test_add2"))
suite.addTest(TestSub("test_sub"))
suite.addTest(TestSub("test_sub2"))
if __name__=="__main__":
runner = unittest.TextTestRunner()
runner.run(suite)

python unittest单元测试框架-1的更多相关文章

  1. python unittest单元测试框架-2discover

    基于TestLoader提供的discover方法实现用例执行 当用例达达到数十条后,在runtest.py文件中通过addTest()添加/删除测试用例就非常麻烦.此时可以使用discover方法找 ...

  2. python unittest单元测试框架-3用例执行顺序、多级目录、装饰器、fixtures

    1.用例执行顺序 unittest默认会按照ascii码的顺序,依次执行.类名--方法名排序,使用discover也是默认排序.如果不想使用默认排序,就使用testsuite测试集的方式. impor ...

  3. Python+selenium之简单介绍unittest单元测试框架

    Python+selenium之简单介绍unittest单元测试框架 一.unittest简单介绍 unittest支持测试自动化,共享测试用例中的初始化和关闭退出代码,在unittest中最小单元是 ...

  4. Python+Selenium框架设计篇之-简单介绍unittest单元测试框架

    前面文章已经简单介绍了一些关于自动化测试框架的介绍,知道了什么是自动化测试框架,主要有哪些特点,基本组成部分等.在继续介绍框架设计之前,我们先来学习一个工具,叫unittest.       unit ...

  5. Python+Selenium ----unittest单元测试框架

    unittest是一个单元测试框架,是Python编程的单元测试框架.有时候,也做叫做“PyUnit”,是Junit的Python语言版本.这里了解下,Junit是Java语言的单元测试框架,Java ...

  6. Python 单元测试框架系列:聊聊 Python 的单元测试框架(一):unittest

    作者:HelloGitHub-Prodesire HelloGitHub 的<讲解开源项目>系列,项目地址:https://github.com/HelloGitHub-Team/Arti ...

  7. Selenium+Python ---- 免登录、等待、unittest单元测试框架、PO模型

    1.免登录在进行测试的过程中难免会遇到登录的情况,给测试工作添加了工作量,本文仅提供一些思路供参考解决方式:手动请求中添加cookies.火狐的profile文件记录信息实现.人工介入.万能验证码.去 ...

  8. Selenium基于Python web自动化基础二 -- 免登录、等待及unittest单元测试框架

    一.免登录在进行测试的过程中难免会遇到登录的情况,给测试工作添加了工作量,本文仅提供一些思路供参考解决方式:手动请求中添加cookies.火狐的profile文件记录信息实现.人工介入.万能验证码.去 ...

  9. Python+Selenium学习笔记16 - unittest单元测试框架

    unittest单元测试框架包括 Test Case,  Test Suite, Test Runner, Test Fixture Test Cases 组成Test Suite, Test Run ...

随机推荐

  1. 投资银行的IT部门——不同之处与常见误解

    投资银行的IT部门——不同之处与常见误解 说了这么多投资银行,投行里面的IT部门究竟是做什么的呢?在过去,投资银行仅靠纸.笔.计算器就能做生意了.但是在今天,所有的部门都要依靠IT技术.交易部门甚至是 ...

  2. spring 定时任务参数配置详解

    注:本文摘自<Quartz Cron 触发器 Cron Expression 的格式>http://blog.csdn.net/yefengmeander/article/details/ ...

  3. 《TensorFlow实战》读书笔记(完结)

    1 TensorFlow基础 ---1.1TensorFlow概要 TensorFlow使用数据流图进行计算,一次编写,各处运行. ---1.2 TensorFlow编程模型简介 TensorFlow ...

  4. vue 之 Vue.extend()

    Vue.extend( options ) 参数: {Object} options 用法: 使用基础 Vue 构造器,创建一个“子类”.参数是一个包含组件选项的对象. data 选项是特例,需要注意 ...

  5. select 从应用层到内核实现解析

    在一个应用中,如果需要读取多个设备文件,这其中有多种实现方式: 1.使用一个进程,并采用同步查询机制,不停的去轮询每一个设备描述符,当设备描述符不可用时,进程睡眠. 2:使用多个进程或者线程分别读取一 ...

  6. putc,fputc,和putchar

    putc()功能和fputc()差不多,一个是宏,一个是函数 putc(int ch,FILE *fp),即将字符ch输出到fp所指的文件中:putchar(char ch),即将字符ch输出到标准输 ...

  7. jQuery自动完成点击html元素

    /************************************************************************** * jQuery自动完成点击html元素 * 声 ...

  8. 20155301 2016-2017-2 《Java程序设计》第9周学习总结

    20155301 2016-2017-2 <Java程序设计>第9周学习总结 教材学习内容总结 JDBC全名Java DataBase Connectivity,是联机数据库的标准规范.具 ...

  9. L2-2 重排链表 (25 分)

    给定一个单链表 L​1​​→L​2​​→⋯→L​n−1​​→L​n​​,请编写程序将链表重新排列为 L​n​​→L​1​​→L​n−1​​→L​2​​→⋯.例如:给定L为1→2→3→4→5→6,则输出 ...

  10. 2018-2019-2 20165212《网络攻防技术》Exp5 MSF基础应用

    2018-2019-2 20165212<网络攻防技术>Exp5 MSF基础应用 攻击成果 主动攻击的实践 ms17010eternalblue payload windows/x64/m ...