下面例子,是一般测试框架的基本结构

框架知识点包括:实例化被测试模块类、装载测试用例、测试套件打包、保存测试输出结果、生成测试报告等

测试情况包括   :跳过某个case、执行成功、执行失败

#待测试模块 -> myclass.py

class myclass:
  def __init__(self):
    pass

  def sum(self, x, y):
    return x+y

  def sub(self, x, y):
    return x-y

  def cheng(self, x, y):
    return x*y

#单元测试模块 -> mytest.py

import unittest     #导入测试模块
import myclass    #导入待测试模块

class mytest(unittest.TestCase):

  #初始化工作
  def setUp(self):
    self.tclass = myclass.myclass()    #实例化了被测试模块中的类

  #退出清理工作
  def tearDown(self):
    pass

  #具体的测试用例
  def test_sum(self):
    self.assertEqual(self.tclass.sum(1,2) ,3)

  #跳过某个case
  @unittest.skip("I don't want to run this case.")
  def test_sub(self):
    self.assertEqual(self.tclass.sub(4,2) ,2)

  def test_cheng(self):
    self.assertEqual(self.tclass.cheng(2,3) ,5)

if __name__ == '__main__':

  #装载测试用例(该句话等价于tests = [mytest("test_sum"),mytest("test_sub"),mytest("test_cheng")])
  tests = unittest.TestLoader().loadTestsFromTestCase(mytest)

  #使用测试套件并打包测试用例(addTests()等价于addTest())
  suite = unittest.TestSuite()
  suite.addTest(tests)

  #保存unittest的测试输出日志
  log_name = "log.txt"
  with open(log_name, 'w+')as f:
    result = unittest.TextTestRunner(stream = f, verbosity = 2).run(suite)

  #若不保存测试输出结果,执行如下命令
  #result = unittest.TextTestRunner(verbosity = 2).run(suite)

  #生成测试报告
  print("testsRun:%s" %result.testsRun)
  print("failures:%s" %len(result.failures))
  print("errors:%s" %len(result.errors))
  print("skipped:%s" %len(result.skipped))

#以上“if __name__ == '__main__':”下的内容,完全可以使用“unittest。main()”替代(前提是:所有的测试模块均以test开头)

交互界面执行结果:

测试输出结果(log):

测试结果保存地址:C:\Users\xxx\Desktop

Python unittest 基本框架解析(2)的更多相关文章

  1. Python unittest基本框架组成(1)

    Python的标准库——unittest(可以实现自动化测试框架的搭建) python unittest四大组成“元件”: test fixture(测试脚手架)——测试代码的运行环境,指测试准备前和 ...

  2. 《selenium2 python 自动化测试实战》(21)——unittest单元测试框架解析

    unittest是展开自动化测试的基础——这个框架很重要! 我们先自己写一个测试类: 1.被测试类 Widthget.py: # coding: utf-8 class Widthget:    de ...

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

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

  4. UnitTest单元测试框架解析【实用篇】

    UnitTest是展开自动化测试的基础——这个框架很重要!首先我们先自己写一个测试类: 1.被测试类 Widthget.py: # coding: utf-8class Widthget: def _ ...

  5. python:unittest(测试框架)

    一,基本概念 TestCase:所有测试用例的基类 TestLoad:加载测试用例,返回TestSuite(测试套件) TestSuite:创建测试套件 TextTestRunner:运行测试用例 T ...

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

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

  7. python unittest单元测试框架-1

    Test Case.Test Suite.Test Runner.Test Fixture Test Case:单个测试用例 Test Suite:测试组合.可以把多个测试用例集合在一起执行. Tes ...

  8. Python web自动化测试框架搭建(功能&接口)——unittest介绍

    Python UnitTest测试框架介绍 1)         TestCase:所有测试用例类继承的基本类, TestCase的实例就是测试用例 2)         TestSuite:测试套件 ...

  9. unittest 单元测试框架

    引入 unittest 框架 相想使用unittest 框架,首先要引入unittest 包 import unittest class Baidu(unittest.TestCase): Baidu ...

随机推荐

  1. 转:浅谈Linux的内存管理机制

    一 物理内存和虚拟内存          我们知道,直接从物理内存读写数据要比从硬盘读写数据要快的多,因此,我们希望所有数据的读取和写入都在内存完成,而内存是有限的,这样就引出了物理内存与虚拟内存的概 ...

  2. hdoj 3351 Seinfeld 【栈的简单应用】

    Seinfeld Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total S ...

  3. Spring之IOC篇章具体解释

    专题一   IOC 1.接口以及面向接口编程 a.结构设计中,分清层次以及调用关系,每层仅仅向外(或者上层)提供一组功能接口,各层间仅依赖接口而非实现类这样做的优点是,接口实现的变动不影响各层间的调用 ...

  4. C++中防止STL中迭代器失效——map/set等关联容器——vector/list/deque等序列容器—如何防止迭代器失效—即erase()的使用

    序列性容器::(vector和list和deque)   erase迭代器不仅使所有指向被删元素的迭代器失效,而且使被   删元素之后的所有迭代器失效,所以不能使用erase(iter++)的方 式, ...

  5. MVC的验证(模型注解和非侵入式脚本的结合使用) .Net中初探Redis .net通过代码发送邮件 Log4net (Log for .net) 使用GDI技术创建ASP.NET验证码 Razor模板引擎 (RazorEngine) .Net程序员应该掌握的正则表达式

    MVC的验证(模型注解和非侵入式脚本的结合使用)   @HtmlHrlper方式创建的标签,会自动生成一些属性,其中一些属性就是关于验证 如图示例: 模型注解 通过模型注解后,MVC的验证,包括前台客 ...

  6. udhcp源码详解(五) 之DHCP包--options字段

    中间有很长一段时间没有更新udhcp源码详解的博客,主要是源码里的函数太多,不知道要不要一个一个讲下去,要知道讲DHCP的实现理论的话一篇博文也就可以大致的讲完,但实现的源码却要关心很多的问题,比如说 ...

  7. 在CentOS上把MySQL从5.5升级到5.6

    在CentOS上把MySQL从5.5升级到5.6 摘要:本文记录了在CentOS 6.3上,把MySQL从5.5.28升级到5.6.19的过程. 1. 概述 在我做的一个项目中,最近我对生产服务器上的 ...

  8. A Simple Example About Privileged Methods in JavaScript

    Douglas Crockford classified the "class methods" in JavaScript into three types: private, ...

  9. jquery源码学习笔记三:jQuery工厂剖析

    jquery源码学习笔记二:jQuery工厂 jquery源码学习笔记一:总体结构 上两篇说过,query的核心是一个jQuery工厂.其代码如下 function( window, noGlobal ...

  10. ubuntu查看文件的权限

    查看linux文件的权限: 查看path路径下名为filename的文件或文件夹的权限: ls -l path/filename ls -l path/filename 查看path路径下的所有文件的 ...