unittest单元测试框架最初受JUnit启发,与其他语言的主要单元测试框架具有相似的风格。 它支持测试自动化,支持开启或关闭某个测试,支持结合测试。另外它可以生成各个单元测试的报告。为了实现以上功能,unitTest提供了四大功能:

测试夹具(test fixture)

  测试夹具起自动初始化、回收资源作用。以类为对象的话,在python里对应的方法分别是test_isupper、test_upper,前者可以起初始化作用,后者可以起回收资源作用。

测试用例(test case)

  测试用例是单独的测试单元。unittest提供了一个基类TestCase,可用于创建新的测试用例。

测试套件(test suite)

   测试套件用于将一个个的测试用例结合起来。

测试运行器(test runner)

  测试运行器会提供给用户测试的结果,可以以图形界面、文本界面等形式返回。


例子解析

总体上unittest提供了一组丰富的工具,供给用户构建与测试。本小节用一个简单的例子和大家演示一下,首先代码如下:

import unittest

class TestStringMethods(unittest.TestCase):

    def test_upper(self):
print("test_upper") def test_isupper(self):
print("test_isupper") def test_split(self):
print("test_split") if __name__ == '__main__':
unittest.main()

1:首先我们执行下代码,可以看到如图:

2: 该类继承unittest.TestCase类,可以看出,里面有三个function,分别为test_upper、test_isupper、test_split,其中的test_isupper相当于类的构造操作,test_upper相当于类的析构操作,而默认的test_xxx后的函数则是单元测试对应的函数,默认会按照代码的顺序依次执行.

3:我们添加一个函数test_split1,代码如图:

    def test_split(self):
print("test_split") def test_split1(self):
print("test_split1")

运行结果如图:

4:讲好基础的,我们讲关于命令行编译运行的内容,首先我们拷贝test1.py并生成test2.py。若想要同时编译运行test1.py与test2.py,又或者我们想编译运行整个文件夹的unittest模块代码,再或者我们只想编译运行某个py文件下的某个function,这该怎么办呢?详细请看下方。

①:python -unittest test1 test2——这里指的是按顺序执行test1.py test2.py文件中的unittest模块。

②:python -m test1.TestStringMethods——这里指的是执行test1.py文件中名为TestStringMethods的unittest类。

③:python -m unittest test1.TestStringMethods.test_split——这里指的是只执行test1.py文件中名为TestStringMethods的unittest类的test_split函数。

④:python -m unittest——这里指的是编译该层目录下继承unittest模块的所有py文件。

⑤:python -m unittest discover——等同于python -m Unittest,后还要接参数时要加discover。

⑥:python -unittest discover -s dest_Dir -"*.py"——编译目标dir目录下继承unittest模块的所有py文件,其中-s 后接对应文件夹,-p 后接匹配模式。

如果想让执行结果更为明显,可以加上 -v;若想获取其他参数的用法,可以加上 -h。

Python unittest第一篇:基础入门+命令行编译的更多相关文章

  1. 【Python Learning第一篇】Linux命令学习及Vim命令的使用

    学了两天,终于把基本命令学完了,掌握以后可以当半个程序员了♪(^∇^*) 此文是一篇备忘录或者查询笔记,如果哪位大佬看上了并且非常嫌弃的话,还请大佬不吝赐教,多多包涵 以下是我上课做的一些笔记,非常的 ...

  2. python第四篇:linux命令行总结 + 自动备份Python程序

    由于最近需要学习Python爬虫相关的知识,所以就先从Python基础.Linux基础开始进行了学习,下面主要是总结了常见的Linux的命令行.最后为了巩固学到的东西,尝试写了个自动备份的Python ...

  3. [Python笔记]第一篇:基础知识

    本篇主要内容有:什么是python.如何安装python.py解释器解释过程.字符集转换知识.传参.流程控制 初识Python 一.什么是Python Python是一种面向对象.解释型计算机程序设计 ...

  4. Python人工智能第一篇:语音合成和语音识别

    Python人工智能第一篇:语音合成和语音识别 ​ 此篇是人工智能应用的重点,只用现成的技术不做底层算法,也是让初级程序员快速进入人工智能行业的捷径.目前市面上主流的AI技术提供公司有很多,比如百度, ...

  5. Linux 究级基础入门命令整理

    Linux 究级基础入门命令整理 条条框框,三三两两,怎讷个这么多,哈哈!no zuo no die. 纯粹个人菜鸟笔记,望大神笑纳! 后续,未完!! 查看系统信息 uname -a - 查看内核/操 ...

  6. 深入学习jQuery选择器系列第一篇——基础选择器和层级选择器

    × 目录 [1]id选择器 [2]元素选择器 [3]类选择器[4]通配选择器[5]群组选择器[6]后代选择器[7]兄弟选择器 前面的话 选择器是jQuery的根基,在jQuery中,对事件处理.遍历D ...

  7. [译]PrestaShop开发者指南 第一篇 基础

    # 第一篇 基础 PS(PrestaShop简称)一开始就设定了能够在它的基础上很简单的构建第三方模块的机制,让它成为一款具有极高定制性的电子商务软件. PS的可以在三个方面进行定制: * 主题 * ...

  8. 【linux基础】使用命令行编译运行c++程序

    前言 在linux系统运行程序,小鹅知道的有3种编译方式,一种是直接命令行编译,一种是使用Cmake,一种是使用脚本文件(*.sh).本文介绍的是使用命令行编译. 使用过程 注意不同系统的编译器版本可 ...

  9. 2016/01/10 C++ Primer 小记 —— 命令行编译环境配置

    OK!第一篇博文!自贺一下! 今日看了此书的前几页.嗯,说得挺全,基础易懂. 之前学过c++,但没用过命令行编译. 本人用的VS里的编译器,文件名是cl.exe,在VC目录下. 虽然有了编译器,但并不 ...

随机推荐

  1. innobackupex工作原理

    写篇文章凑个数,基本是翻译,建议看原文. http://www.percona.com/doc/percona-xtrabackup/2.1/innobackupex/how_innobackupex ...

  2. 09 Finding a Motif in DNA

    Problem Given two strings ss and tt, tt is a substring of ss if tt is contained as a contiguous coll ...

  3. GIT checkout 和 reset 区别

    git checkout -- file:撤销对工作区修改:这个命令是以最新的存储时间节点(add和commit)为参照,覆盖工作区对应文件file:这个命令改变的是工作区 git reset HEA ...

  4. Oracle 11g PL/SQL Developer登入时候报ORA-12638: 身份证明检索失败的解决办法(安装了6遍,吐血之作)

    1.报这个错的时候会弹出一个对话框,先点击终止 2.然后汇报出这个是错误的窗口,然后点击确认,但是不要关这个安装窗口也不要其他不必要操作,窗口最小化 3.找到product文件夹,一般在app文件里 ...

  5. 关于Spring Data redis几种对象序列化的比较

    redis虽然提供了对list set hash等数据类型的支持,但是没有提供对POJO对象的支持,底层都是把对象序列化后再以字符串的方式存储的.因此,Spring data提供了若干个Seriali ...

  6. 2016-2017-2 20155223 实验二 《Java面向对象程序设计》

    2016-2017-2 苏黄永郦 实验二 实验报告 前期准备工作--程序安装 -问题一 开始的时候我就在老师博客的指导下安装IDEA插件JUnit Generator V2.0.当然我的IDEA肯定没 ...

  7. ZOJ3712:Hard to Play

    MightyHorse is playing a music game called osu!. After playing for several months, MightyHorse disco ...

  8. 初识Java微信公众号开发

    选定类型后不可更改 企业号与服务号,订阅号的区别 公众号微信注册流程: 个人就选择订阅号 外网映射 必须要使用映射工具将本地的地址映射到公网上去 介绍一个ngrok 首先下载ngork,例如保存在D盘 ...

  9. 自我介绍和Github初次使用心得

    姓名:许洪科 班级:网络工程142 学号:1413042047 爱好:足球 编写过的程序:0 编写过的代码:几乎为0(大多数为网上直接复制的) Github注册过程:. 1:进入Github网站后点击 ...

  10. SQLServer数据库的状态一直都是正在还原

    解决方案: 执行以下SQL语句 restore database [数据库名称] with recovery