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. CMD一般命令

    返回根目录:cd\ 回车 进入D盘:输入cd\ 回车,返回根目录,再输入d:回车,即可进入d盘(注意:字符都是英文字符) 进入D盘叫JDK的文件夹:如上面进入d盘后,输入:cd jdk 回车即可 进入 ...

  2. Long-distance navigation and magnetoreception in migratory animals(迁徙动物中的长距离导航和磁感应)

    摘要:For centuries, humans have been fascinated by how migratory animals find their way over thousands ...

  3. mfc的一点总结-----Edit Control操作

    获取Edit Control(编辑框)的内容: CString key; GetDlgItem(IDC_EDIT1)->GetWindowText(key); 其中IDC_EDIT1是所要获取编 ...

  4. 通过 cygwin64 自己编译对应的 Tera Term cyglaunch.exe

    步骤如下: 将 cygterm+.tar.gz解压到任意目录,当然要cygwin容易操作.(本例直接放到$HOME目录下,启动cygwin后的默认目录,如果之前没有更改的话) 将 Makefile 中 ...

  5. oracle 索引的分类

    1. B树索引(默认索引,保存讲过排序过的索引列和对应的rowid值) 1)说明: 1.oracle中最常用的索引:B树索引就是一颗二叉树:叶子节点(双向链表)包含索引列和指向表中每个匹配行的ROWI ...

  6. devexpress停靠菜单

    dxDockSite1.Width := 27; dxDockPanel1.DockTo(dxDockSite1, dtLeft, 0); dxDockPanel2.DockTo(dxDockPane ...

  7. 切图,css注意事项

    1.文字尽量不要独立放在div中,一般放在p,span中(显得不专业) 2.div给了width就不要用padding-left,padding-right:给了height就不给padding-to ...

  8. 随手记录: MVC自定义提交form

    function mySubmit() { var frm = $('#frm'); var result = frm.valid(); if (ret) { frm.submit(); } else ...

  9. MD5签名

    /// <summary>        /// 校验签名        /// </summary>        /// <param name="mode ...

  10. WM_COPYDATA+BHO+Qt实现进程间通信

    最近项目有一个需求:点击网页上某个按钮,通知Qt客户端.网页相关操作使用了BHO,BHO与Qt通信通过WB_COPYDATA,为什么这么麻烦呢,因为项目正好用到了BHO,可能还有其他方式,能直接通过网 ...