unittest核心要素

1 TestCase

一个TestCase的实例就是一个测试用例。什么是测试用例呢?就是一个完整的测试流程,

包括测试环境的准备(setUp),执行测试代码(run),以及测试后环境的还原(tearDown)。单元

测试(unit test)的本质也就在这里,一个测试用例是一个完整的测试单元,通过运行这个测试单元,可以对某一个问题进行验证。

2 TestSuite

而多个测试用例集合在一起就是TestSuite,而且TestSuite也可以嵌套TestSuite。TestLoader是用来加载测试用例到TestSuite中的。

3 TextTestRunner

TextTestRunner是用来执行测试用例的,其中的run()会执行TestSuite/TestCase中的run(result)方法。测试的结果会保存到TextTestResult实例中,包括运行了多少测试用例,成功了多少,失败了多少等信息。

4 Fixture

而对一个测试用例环境的搭建和销毁,是一个fixture。

案例:定义一个calculate类,然后用unittest进行测试;

#!/usr/bin/python3  
class Math:
  def __init__(self,a,b):
    self.a = int(a)
    self.b = int(b)

def add(self):
    return self.a + self.b

测试代码:
#!/usr/bin/python3  
from calculator import Math
import unittest

class TestMath(unittest.TestCase):
  def setUp(self):
    print('test start')
def test_add(self):
    j = Math(5,10)
    #self.assertEqual(j.add(),15)
    self.assertEqual(j.add(),12)
def tearDown(self):
    print('test end')

if __name__ == '__main__':
  suite = unittest.TestSuite()
  suite.addTest(TestMath('test_add'))

runner = unittest.TextTestRunner()
  runner.run(suite)

执行结果;

Testing started at 16:39 ... C:\Users\Administrator\AppData\Local\Programs\Python\Python36-32\python.exe "D:\PyCharm Community Edition 2017.3.3\helpers\pycharm\_jb_unittest_runner.py" --path E:/Selenium/unittest/test_Math.py Launching unittests with arguments python -m unittest E:/Selenium/unittest/test_Math.py in E:\Selenium\unittest test start test end

 

Ran 1 test in 0.008s

 

FAILED (failures=1)

 

12 != 15

 

Expected :15 Actual   :12  <Click to see difference>

 

Traceback (most recent call last):   File "D:\PyCharm Community Edition 2017.3.3\helpers\pycharm\teamcity\diff_tools.py", line 30, in _patched_equals     old(self, first, second, msg)   File "C:\Users\Administrator\AppData\Local\Programs\Python\Python36-32\lib\unittest\case.py", line 829, in assertEqual     assertion_func(first, second, msg=msg)   File "C:\Users\Administrator\AppData\Local\Programs\Python\Python36-32\lib\unittest\case.py", line 822, in _baseAssertEqual     raise self.failureException(msg) AssertionError: 15 != 12

 

During handling of the above exception, another exception occurred:

 

Traceback (most recent call last):   File "C:\Users\Administrator\AppData\Local\Programs\Python\Python36-32\lib\unittest\case.py", line 59, in testPartExecutor     yield   File "C:\Users\Administrator\AppData\Local\Programs\Python\Python36-32\lib\unittest\case.py", line 605, in run     testMethod()   File "E:\Selenium\unittest\test_Math.py", line 13, in test_add     self.assertEqual(j.add(),12)

 

Process finished with exit code 1

因为12 !=15,所以报错。

 
 

 

转载于:https://www.cnblogs.com/holly-j/p/8448512.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/453463.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

iOS内存区域部分内容

目前参考这里&#xff1a; https://www.zhihu.com/question/263823072/answer/273452932 以后整理相关的代码问题。 更多参考资料&#xff1a; https://stackoverflow.com/questions/79923/what-and-where-are-the-stack-and-heap 堆栈&#xff1a;https://baike.baidu.com/ite…

php 启动ffmpeg,安装php扩展 ffmpeg-php

首先先下载扩展包扩展下载地址: http://nchc.dl.sourceforge.net/project/ffmpeg-php/ffmpeg-php/0.6.0/ffmpeg-php-0.6.0.tbz2进入 ffmpeg-php目录 进行编译扩展/usr/local/php/bin/phpize./configure --with-php-config/usr/local/php/bin/php-configmake 出错报错情况make: …

armeabi和armeabi-v7a的区别

armeabi默认选项&#xff0c; 支持基于 ARM* v5TE 的设备 支持软浮点运算&#xff08;不支持硬件辅助的浮点计算&#xff09; 支持所有 ARM* 设备 armeabi-v7a 支持基于 ARM* v7 的设备 支持硬件 FPU 指令 支持硬件浮点运算 不同手机由于cpu的不同&#xff0c;使用不同的驱动…

浅析Numpy.genfromtxt及File I/O讲解

Python 并没有提供数组功能&#xff0c;虽然列表 (list) 可以完成基本的数组功能&#xff0c;但它并不是真正的数组&#xff0c;而且在数据量较大时&#xff0c;使用列表的速度就会慢的让人难受。为此&#xff0c;Numpy 提供了真正的数组功能&#xff0c;以及对数据快速处理的函…

麻雀虽小,五脏俱全:分析CVS活动情况的小工具(有源码供学习)

最近开发团队发布的版本质量很成问题&#xff0c;追究起来有很多原因&#xff0c;其中之一是CVS的使用不合理&#xff0c; 于是想做个一小工具&#xff0c;分析CVS上每天的活动&#xff0c;以便掌握团队成员对CVS的使用情况。 也许有现成的开源项目可以完成这项任务&#xff…

php如果实现日历的制作,教大家制作简单的php日历

最近的一个项目中&#xff0c;需要将数据用日历方式显示&#xff0c;网上有很多的JS插件&#xff0c;后面为了自己能有更大的控制权&#xff0c;决定自己制作一个日历显示。如下图所示&#xff1a;一、计算数据1、new一个Calendar类2、初始化两个下拉框中的数据&#xff0c;年份…

Spark之 使用SparkSql操作mysql和DataFrame的Scala实现

通过读取文件转换成DataFrame数据写入到mysql中 package com.zy.sparksqlimport java.util.Propertiesimport org.apache.spark.SparkContext import org.apache.spark.rdd.RDD import org.apache.spark.sql.{DataFrame, Row, SparkSession} import org.apache.spark.sql.types…

web服务器之iis,apache,tomcat三者之间的比较

IIS-Apache-Tomcat的区别 IIS与Tomcat的区别 IIS是微软公司的Web服务器。主要支持ASP语言环境. Tomcat是Java Servlet 2.2和JavaServer Pages 1.1技术的标准实现&#xff0c;是基于Apache许可证下开发的SJP语言环境容器,严格得说不能算是一个WEB服务器,而是Apache服务适配器。 …

iOS CAGradientLayer颜色渐变

Gradient&#xff1a;本身就是梯度的意思&#xff0c;所以在这里就是作为渐变色来理解 CAGradientLayer用于处理渐变色的层结构CAGradientLayer的渐变色可以做隐式动画大部分情况下&#xff0c;CAGradientLayer时和CAShapeLayer配合使用,CAShapeLayer这里就不介绍了CAGradientL…

编程要养成的好习惯

1.- DRY: Don’t repeat yourself. DRY 是一个最简单的法则&#xff0c;也是最容易被理解的。但它也可能是最难被应用的&#xff08;因为要做到这样&#xff0c;我们需要在泛型设计上做相当的努力&#xff0c;这并不是一件容易的事&#xff09;。它意味着&#xff0c;当我们在…

flink整合java,Flink使用SideOutPut替换Split实现分流

基于apache flink的流处理实时模型44元包邮(需用券)去购买 >以前的数据分析项目(版本1.4.2)&#xff0c;对从Kafka读取的原始数据流&#xff0c;调用split接口实现分流.新项目决定使用Flink 1.7.2&#xff0c;使用split接口进行分流的时候&#xff0c;发现接口被标记为depra…

虚机中访问外网;NAT中的POSTROUTING是怎么搞的?

看下docker中是怎么配置的网络 在虚机中访问外网&#xff1a;设定了qemu&#xff0c;在主机上添加路由&#xff1a;sudo iptables -t nat -I POSTROUTING -s 192.168.1.110 -j SNAT --to-source 192.168.0.108 设置了这句话就可以访问外网了。 设置了两个虚拟机&#xff1a; ta…

Fragment结合ViewPager之懒加载

什么是懒加载&#xff1f;为什么要用懒加载&#xff1f;### 1、什么是懒加载 懒加载就是当ViewPager和Fragment结合在一起使用时&#xff0c;Fragment呈现在用户面前时才加载数据&#xff0c;当其从未被呈现在用户面前时&#xff0c;不会执行加载数据的代码。这就是我所理解的懒…

WCF和webservice的区别

微软论坛的斑竹回答如下&#xff1a; 脑内&#xff1a;果然是高大上啊 1.WebService&#xff1a;严格来说是行业标准&#xff0c;不是技术&#xff0c;使用XML扩展标记语言来表示数据&#xff08;这个是夸语言和平台的关键&#xff09;。微 软的Web服务实现称为ASP.NET Web Ser…

职场不得不明白的十大定律

帕金森定律 美国著名历史学家诺斯古德•帕金森通过长期调查研究&#xff0c;写了一本名叫《帕金森定律》的书&#xff0c;他在书中阐述了机构人员膨胀的原因及后果&#xff1a;一个不称职的官员&#xff0c;可能有三条出路。第一是申请退职&#xff0c;把位子让给能干的人&am…

php控制器教程,laravel基础教程 -- 控制器

HTTP 控制器简介控制器允许你将相应的路由业务逻辑封装在控制器类中进行有效的管理&#xff0c;这样你不必将所有的路由逻辑集中到routes.php文件中&#xff0c;导致代码的臃肿与难以维护。所有的控制器类都被存储在app/Http/Controllers目录中.基本控制器一个基本的控制器应该…

org.apache.jasper.JasperException: Unable to compile class for JSP:

报错信息&#xff1a; org.apache.jasper.JasperException: Unable to compile class for JSP: An error occurred at line: 1 in the generated java file The type java.io.ObjectInputStream cannot be resolved. It is indirectly referenced from required .class filesSt…

i++和++i

关于自增自减运算&#xff0c;很多书籍没有把问题讲清楚,在C语言里是这样的&#xff1a; 1.后置运算&#xff1a;k表示先运算&#xff0c;后自加。 意思是遇到k了&#xff0c;我先把当前的k的值拿来参加运算&#xff0c;后面再去管它的自加。 那么&#xff0c;“后面”后到什么…

什么样的项目经历会让面试官眼前一亮

很多同学都问过我类似的问题&#xff1a; 咱们《C语言也能干大事》中讲的自己动手写windows优化大师、自己动手写计算器等东西只是写着玩的小玩具而已&#xff0c;这些能用来以后找工作时写到简历中的作品吗&#xff1f;看别人的简历写的“图书管理系统”、“教务选课系统”多有…

matlab采样频谱,Matlab对采样数据进行频谱分析

使用Matlab对采样数据进行频谱分析1、采样数据导入Matlab采样数据的导入至少有三种方法。第一就是手动将数据整理成Matlab支持的格式&#xff0c;这种方法仅适用于数据量比较小的采样。第二种方法是使用Matlab的可视化交互操作&#xff0c;具体操作步骤为&#xff1a;File --&g…