现在正在使用 unittest 框架,我们来记录下这个框架的知识点;

  unittest 框架:我们在写接口用例的时候,会继承 unittest 当中的 TestCase 的类和方法,私有方法除外,来识别以 test_ 开头的测试用例,unittest 相当于是一个包,我们来使用包里面的工具;

  什么是自动化测试:写一段程序去测试另一段程序是否正常的过程

1. 单元测试的概念

  1. 测试不是来测试Java写的模块、函数、类
  2. 而是测试代码输入和输出,比对是否正确
  3. 往往单元测试, 是有开发来写, 用于测试自己写的模块、函数、类是否正确
  4. 有的一些单元测试任务, 是由测试人员来写
  5. 单元测试, 是一个极其强大的测试断言工具

2. 单元测试的作用

对代码中的函数、类、模拟进行测试
辅助进行接口测试,将预期结果与实际结果进行对

3. 运行 unittest 的时候, 我们就调用父类的 main() 方法来运行

if __name__ == '__main__':
unittest.main()

4. unittest 框架中,如何测试多条用例?用例执行顺序?如何记录判断接口的成功与失败的用例

如何测试多条用例?

  • 定义一个继承unittest的测试类, 为每个测试用例定义一个以test.开头的实例方法

用例执行顺序?

  • 以test _开头的实例方法名称的ASCII码数值,从小到大的顺序来执行

总结:

  • unittest 框架会把以 test_ 开头的实例方法识别为用例, 同时会自动执行
  • 如果不是 test_ 开头的方法, 那么不会被当做用例当自动执行
  • 以test_开头的实例方法名称的 ASCCI 码数值,从小到大的顺序执行
  • 使用 try..except.... 来记录成功与失败的用例总数
  • 测试用例失败后需要主动抛出异常,增加日志文件,记录测试用例的结果
  • 执行的总用例数为: 所有以test_开头的实例方法总数
  • 失败的用例总数为, 抛出异常的实例方法总数

5. unittest 框架中为我们提供了强大的断言方法,我们来记录下常用的几个

self.assertEqual():断言实际结果与预期结果是否相等;第一个参数为期望值,第二个参数为实际值,第三个参数 msg 为断言失败之后的报错信息
self.assertIn():成员运算第一个表达式是否是第二个表达式的成员
self.assertTrue():断言这个表达式是否为True,如果为True则成功,不为True则失败
self.assertIsInstance():断言第一个是否是第二个参数的实例(判断是否是list类型)
self.assertIsNone():断言字段obj数值不为空
self.assertIs():判断两个对象是不是同一个对象
self.assertRaises():抛出异常

  

import unittest

class TestClass01(unittest.TestCase):

    def test_case01(self):
# 把鼠标放在实例方法名上来运行用例, 那么只会运行当前一条用例
# assertTrue 判断是否为真,isupper(一字欧喷)全部为为大写
self.assertTrue("PYTHON".isupper(), msg="测试是否为大写失败") def test_case02(self):
A = "北辰"
B = ["休想", "默", "生如花开", "蝶影飞雪", "北辰"]
# assertIn 判断 A 是否在 B 中
self.assertIn(A, B) def test_case03(self):
one_var = [100, 200]
# 判断这个函数是否为指定类型 列表
self.assertIsInstance(one_var, list) if __name__ == '__main__':
unittest.main()

6. Python 接口自动化用例执行之前需要使用:setUp、tearDown;setUpClass、tearDownClass

setUp :每个用例执行之前调用
tearDown :每个用例执行之后调用
setUpClass :(译:赛特阿婆.克拉斯)所有用例执行之前调用 TestCase 中 setUpClass 类方法
tearDownClass:(译:缇欧当.克拉斯)所有用例执行之后会调用 TestCase 中 tearDownClass 类方法

通常我们会使用 setUpClass 、tearDownClass 需要定义为类方法,如果不定义就没有所有用例之前之后调动的这种特性;

7. Python 中常用的装饰器

@classmethod:定义为类方法(译:可拉斯.满涩的)
@staticmethod:定义为静态方法(译:斯达提克.满涩的)

*******请大家尊重原创,如要转载,请注明出处:转载自:https://www.cnblogs.com/shouhu/   谢谢!!*******

Python 中 unittest 单元测试框架中需要知识点的更多相关文章

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

    unittest是一个单元测试框架,是Python编程的单元测试框架.有时候,也做叫做“PyUnit”,是Junit的Python语言版本.这里了解下,Junit是Java语言的单元测试框架,Java ...

  2. 关于unittest单元测试框架中常用的几种用例加载方法

    unittest模块是Python自带的一个单元测试模块,我们可以用来做单元测试.unittest模块包含了如下几个子模块: 测试用例:TestCase 测试集:TestSuite 加载用例:Test ...

  3. unittest单元测试框架中的参数化及每个用例的注释

    相信大家和我有相同的经历,在写自动化用例脚本的时候,用例的操作是一样的,但是就是参数不同,比如说要测一个付款的接口,付款有很多种渠道,另外只有部分参数不一样,如果我们一个渠道一个渠道的写,在unitt ...

  4. python的unittest单元测试框架断言整理汇总

    自动化脚本最重要的是断言,正确设置断言以后才能帮助我们判断测试用例执行结果. 一.先说说unittest常用的断言吧 常用的就以下几个,网上一搜一大堆.python版本2.7以上都可以调用了. 断言语 ...

  5. unittest单元测试框架

    unittest单元测试框架 概述: 单元测试框架主要用来完成以下三件事: 提供用例组织与执行:当测试用例只有几条时,可以不必考虑用例的组织,但是当用例达到成百上千条时,大量的用例堆砌在一起,就产生了 ...

  6. Selenium(十五):unittest单元测试框架(一) 初识unittest

    1. 认识unittest 什么是单元测试?单元测试负责对最小的软件设计单元(模块)进行验证,它使用软件设计文档中对模块的描述作为指南,对重要的程序分支进行测试以发现模块中的错误.在python语言下 ...

  7. 华为五年自动化测试工程详细解说:unittest单元测试框架

    一.单元测试框架说明 ​ 单元测试是指在编程中,针对程序模块的最小单元(类中的方法)进行正确性检验的测试工作.python+selenium自动化测试中通常使用unittest或者pytest作为单元 ...

  8. Python+selenium之简单介绍unittest单元测试框架

    Python+selenium之简单介绍unittest单元测试框架 一.unittest简单介绍 unittest支持测试自动化,共享测试用例中的初始化和关闭退出代码,在unittest中最小单元是 ...

  9. Python+Selenium框架设计篇之-简单介绍unittest单元测试框架

    前面文章已经简单介绍了一些关于自动化测试框架的介绍,知道了什么是自动化测试框架,主要有哪些特点,基本组成部分等.在继续介绍框架设计之前,我们先来学习一个工具,叫unittest.       unit ...

随机推荐

  1. Python基础:22__slots__类属性

    1:工厂函数 由于类型和类的统一,因而可以子类化Python数据类型.但是所有的Python 内建的转换函数现在都是工厂函数.当这些函数被调用时,你实际上是对相应的类型进行实例化.比如下面的函数都已经 ...

  2. poj1741 树上距离小于等于k的对数 点分治 入门题

    #include <iostream> #include <stdio.h> #include <string.h> #include <algorithm& ...

  3. 从外网站点获取的html去除换行回车制表位\n\r\t

    StringStr.Replace("\\r", "").Replace("\\n", "").Replace(&quo ...

  4. DTCC 2019 | 深度解码阿里数据库实现 数据库内核——基于HLC的分布式事务实现深度剖析

    摘要:分布式事务是分布式数据库最难攻克的技术之一,分布式事务为分布式数据库提供一致性数据访问的支持,保证全局读写原子性和隔离性,提供一体化分布式数据库的用户体验.本文主要分享分布式数据库中的时钟解决方 ...

  5. codeforces2B.The least round way 题解 动态规划/模拟

    题目出处:http://codeforces.com/problemset/problem/2/B 题目描述 给你一个 \(n \times n\) 的二维数组,它包含的元素都是非负整数.你需要寻找一 ...

  6. HDU 4417 Super Mario 主席树查询区间小于某个值的个数

    #include<iostream> #include<string.h> #include<algorithm> #include<stdio.h> ...

  7. CODE FESTIVAL 2017 qual A B fLIP(补题)

    平时没见过这样的题目,看到后很懵逼.没想到. 思路:按下按钮的顺序并不影响结果,一个按钮要么按一次,要么不按,按多了也没用,比如:按3次和按1次没啥区别. 假设这是个M * N的矩阵,我们已经按下了k ...

  8. 分布式TensorFlow集群local server使用详解

    通过local server理解分布式TensorFlow集群的应用与实现. ​​简介 TensorFlow从0.8版本开始,支持分布式集群,并且自带了local server方便测试. Local ...

  9. Lua环境搭建之使用EditPlus搭建Lua开发环境

    luatools正则表达式extension工具encoding 一.语法高亮 打开 EditPlus,Tools 工具-->Preferences首选项==>setting & ...

  10. Flex AIR Mobile应用性能解决方案

    这个flex  mobile开发,一般原生开发也许是最合适的方式,但是涉及到跨平台的问题,有精力的团队一般都会逐个基于移动操作系统进行开发.但是如果追求短小,精悍,快速,希望能够跨平台,基于html5 ...