本文为简单介绍,使用python自带模块unittest来进行单元测试

首先我们有一个需要测试的类,employee.py  定义了涨薪的方法。我们需要测试这个类的功能是否正确。

 class Employee():

     def __init__(self,firstName,lastName,money):
self.firstName = firstName
self.lastName = lastName
self.money = money def give_raise(self,add_money=5000):
self.money += add_money
return self.money

下面开始写单元测试模块  testEmployee.py

 import unittest
from employee import Employee  #导入需要测试的类
from HTMLTestRunner import HTMLTestRunner  #导入生成HTML格式测试报告的模块。 class TestEmployee(unittest.TestCase):  #需继承unittest.TestCase的类 def setUp(self):  #每个测试用例执行前,需要做的操作
self.em = Employee('jade','chang',10000)  #实例化一个雇员对象 def test_give_default_raise(self):  #测试默认涨薪幅度,是否正确,用例名称需以test开头,否则不会运行。
self.assertEqual(self.em.give_raise(),15000) def test_give_custom_raise(self):  #测试自定义涨薪幅度
self.assertEqual(self.em.give_raise(2000),12000) def report():
filepath = r'C:\Users\Administrator\Desktop\RaiseMoney.html'
fp=open(filepath,'wb')
suite = unittest.TestSuite()  #创建测试套件,将测试用例添加至套件中
suite.addTest(TestEmployee('test_give_default_raise'))
suite.addTest(TestEmployee('test_give_custom_raise'))
      #生成测试报告
runner=HTMLTestRunner(stream=fp,title='雇员涨薪', description='雇员信息执行结果')
runner.run(suite)
unittest.main()
fp.close()
if __name__ == '__main__':
report()

运行成功后,生成的测试报告 RaiseMoney.html 如下:

点击Detail,可展开每条测试用例的执行情况。

unittest常见的断言方法:

断言方法 描述
assertEqual(a,b) a == b
assertNotEqual(a,b) a != b
assertTrue(x) x 为True
assertFalse(x) x 为False
assertIn(item, list) item in list
assertNotIn(item, list) item not in list

备注:

HTMLTestRunner.py 下载链接:

链接:https://pan.baidu.com/s/1FIt_6wOVCF7ZxWSUD95OSA
提取码:44hu

Python单元测试unittest与HTMLTestRunner报告生成的更多相关文章

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

    一.unittest简介 unitest单元测试框架最初是有JUnit的启发,它支持测试自动化,共享测试的设置和关闭代码,将测试聚合到集合中,以及测试与报告框架的独立性. 二.unittest相关概念 ...

  2. unittest中HTMLTestRunner模块生成

    unittest里面是不能生成html格式报告的,需要导入一个第三方的模块:HTMLTestRunner 一.导入HTMLTestRunner 方法1.这个模块下载不能通过pip安装了,只能下载后手动 ...

  3. python单元测试unittest

    单元测试作为任何语言的开发者都应该是必要的,因为时隔数月后再回来调试自己的复杂程序时,其实也是很崩溃的事情.虽然会很快熟悉内容,但是修改和 调试将是一件痛苦的事情,如果你在修改了代码后出现问题的话,而 ...

  4. [转]python单元测试unittest

    单元测试作为任何语言的开发者都应该是必要的,因为时隔数月后再回来调试自己的复杂程序时,其实也是很崩溃的事情.虽然会很快熟悉内容,但是修改和调试将是一件痛苦的事情,如果你在修改了代码后出现问题的话,而单 ...

  5. python单元测试unittest实例详解

    转自:http://blog.csdn.net/five3/article/details/7104466 单元测试作为任何语言的开发者都应该是必要的,因为时隔数月后再回来调试自己的复杂程序时,其实也 ...

  6. Python&Selenium&Unittest&BeautifuReport 自动化测试并生成HTML自动化测试报告

    一.摘要 本篇博文将介绍如何借助BeautifulReport和HTML模版,生成HTML测试报告的BeautifulReport 源码Clone地址为 https://github.com/Test ...

  7. Python单元测试框架之pytest 2 -- 生成测试报告

    From: https://www.cnblogs.com/fnng/p/4768239.html Python单元测试框架之pytest -- 生成测试报告 2015-08-29 00:40 by ...

  8. python单元测试unittest、setUp、tearDown()

    单元测试反应的是一种以测试为驱动的开发模式,最大的好处就是保证一个程序模块的行为符合我们设计的测试用例,在将来修改的时候,可以极大程度保证该模块行为仍然是正确的. 下面我编写一个Dict来,这个类的行 ...

  9. python模块学习之HTMLTestRunner模块生成HTML测试报告

    #!/usr/bin/env python #-*- coding:utf-8 -*- from HTMLTestRunner import HTMLTestRunner import time im ...

随机推荐

  1. C++-蓝桥杯-入门训练

    Fibonacci数列,快速幂 #include <cstdio> ][];}; ,MOD=; Matrix A,B,O,I; Matrix Mul(Matrix A,Matrix B){ ...

  2. usim卡介绍

  3. 将自定义工程加入到python根目录下

    1. 在D:\Program Files\Python\Lib\site-packages 添加.pth文件,文件名为模块名称(即auto_XXX),文件内容为模块所在目录.(python添加自定义的 ...

  4. MySQL8.0.11解压版安装详细教程

    1. 从官网下载zip包 官网网址(https://dev.mysql.com/downloads/mysql/) 2. 解压 将压缩包解压到一个目录(后续将此目录作为安装目录),我这里是解压到了D: ...

  5. .net Core 安装在linux上

    1.安装 .net Core 参考官方网站 https://dotnet.microsoft.com/learn/dotnet/hello-world-tutorial/install 2.发布应用程 ...

  6. c++踩坑大法好 赋值和指针的区别

    1,先说结论: 两个指针指向同一个结构,一个改了结构,另一个也会改掉. 两个指针指向同一个结构,修改了其中一个的指向,并且改了其中的内容,另一个不为所动. 2,看例子 main.cpp #includ ...

  7. JDBC获取超出最大连接的连接池对象

  8. 【Unity|C#】基础篇(11)——内置的泛型委托(Action/Func/Predicate)

    [Action] 无返回值 的泛型委托,可以有0~16个参数(函数重载) public delegate void Action(); // 无参数 public delegate void Acti ...

  9. Joining Data with dplyr in R

    目录 inner_join Joining three tables left_join right-join full_join semi- and anti-join Stack Overflow ...

  10. cc.progressFromTo cc.progressTo(action 在duration中ProgressTimer的Percentage变化)

    let progressTimer= new cc.ProgressTimer(new cc.Sprite(fileName));this.addChild(progressTimer);progre ...