1、unittest结构

1、单元测试的框架 unittest(python自带,无需额外安装)+接口
2、文件,命名时,千万不要写成unittest这样的模块名,会报错的
3、功能测试
  1)写用例 TestCase
  2)执行用例 :a)TestSuit 存储用例 b)TestLoader 找用例,加载用例,存到TestSuit里面
  3)对比实际结果、期望结果,判定用例是否通过;即断言 assert
  4)出具测试报告 TextTestRunner

2、编写测试用例

  被测模块,math模块

class Math(object):
def __init__(self,a,b):
self.a = a
self.b = b def add(self):
return self.a + self.b def div(self):
return self.a - self.b

  测试用例

import unittest
from py_unittest.math import Math # 写一个测试类对自己写的math模块进行测试
class TestMath(unittest.TestCase):
'''
编写测试用例:
、测试加法,+ =
、测试剪发:- = -
''' def test_add(self): #、一个用例就是一个函数,不能传参,只有self关键字;、所有的函数都是test_开头,否则不识别为一条测试用例
result = Math(,).add()
print('加法测试,结果是: ',result) def test_div(self):
result1 = Math(,).div()
print('减法测试,结果是: ',result1) if __name__ == '__main__':
unittest.main() #按照ASCII码的排序方式,执行所有的测试用例(即类里面的函数) 控制台输出:
加法测试,结果是:
减法测试,结果是: - Ran tests in .003s #执行了2条测试用例 OK

3、执行测试用例

  从2的执行结果可知,unittest.main()为执行所有测试用例,且执行顺序为ASCII码表的顺序,接下来介绍其他执行方式

import unittest
from py_unittest.case import TestMath #case为写测试用例的python文件,TestMath即上面(2)写的测试用例的类 suit = unittest.TestSuite() #存储用例,用例的容器
# #方法一
# suit.addTest(TestMath('test_add')) #通过往suit里添加测试用例,先添加的测试用例,先执行
# suit.addTest(TestMath('test_div')) #方法二
loadder = unittest.TestLoader() #创建一个加载器,loader去帮你寻找用例,寻找到用例后,全部加载到suit里面
#a:类名
suit.addTest(loadder.loadTestsFromTestCase(TestMath)) #这个方法加载的是类,如果一个模块有多个类,只想加载一个类,可以用它! #b:模块名
from py_unittest import case #将写用例的python文件,即模块引入
suit.addTest(loadder.loadTestsFromModule(case)) #此处加载的是模块名,如果一个模块有多个类,想把该模块的类都加载进来,可以用它! runner = unittest.TextTestRunner() #执行
runner.run(suit) 控制台输出结果为:
....
----------------------------------------------------------------------
Ran tests in .000s #执行了4个测试用例 OK
加法测试,结果是:
减法测试,结果是: -
加法测试,结果是:
减法测试,结果是: -

4、断言

import unittest
from py_unittest.math import Math class TestMath(unittest.TestCase):
def test_add(self):
print('加法测试,结果是: ',result)
self.assertEqual(,result,'加法错误') #第一个参数是期望值,第二个参数是实际值,第三个参数是报错时的提示信息 def test_div(self):
result1 = Math(,).div()
print('减法测试,结果是: ',result1)
import unittest
from py_unittest.case import TestMath suit = unittest.TestSuite()
suit.addTest(TestMath('test_add'))
suit.addTest(TestMath('test_div')) runner = unittest.TextTestRunner() #执行
runner.run(suit) 控制台输出:
F. #F表示失败,.表示执行成功
======================================================================
FAIL: test_add (py_unittest.case.TestMath)
----------------------------------------------------------------------
Traceback (most recent call last):
File "D:\script\kecheng\py_unittest\case.py", line , in test_add
self.assertEqual(,result,'加法错误') #第一个参数是期望值,第二个参数是实际值,第三个参数是报错时的提示信息
AssertionError: != : 加法错误 #“加法错误” 为报错的提示信息 ----------------------------------------------------------------------
Ran tests in .001s
加法测试,结果是: FAILED (failures=)
减法测试,结果是: -

5、测试报告

  参考博客:https://www.cnblogs.com/gaoyuanyuan/p/9842057.html,将下载的HTMLTestRunnerNew.py文件,放到python的lib文件夹下

  调用方式如下:

import unittest
from py_unittest.case import TestMath
from HTMLTestRunnerNew import HTMLTestRunner
import time suit = unittest.TestSuite()
suit.addTest(TestMath('test_add'))
suit.addTest(TestMath('test_div')) now = time.strftime('%Y-%m%d %H%M%S')
filename = 'F:/ ' + now + 'result.html'
with open(filename,'wb') as file: #上下文管理器,执行完冒号后的代码段,文件自动关闭。不需要file.close()操作
# runner = unittest.TextTestRunner(stream=file, descriptions=True, verbosity=) #这部分为unittest自带的,verbosity= ,从0~,运行结果越来越详细
# runner.run(suit)
runner = HTMLTestRunner(stream=file, title='测试报告', description='单元测试报告:', tester='正在学习的测试人员')
runner.run(suit)

6、生成报告截图

7、

8、写的比较好的文章

  https://www.cnblogs.com/yufeihlf/p/5707929.html#test2

python3 --- unittest单元测试框架的更多相关文章

  1. 四. 引入unittest单元测试框架

    1.   安装 SeleniumIDE(firefox) (1)下载地址:https://addons.mozilla.org/en-US/firefox/addon/selenium-ide/ (2 ...

  2. Selenium(十八):unittest单元测试框架(四) HTML测试报告

    1. HTML测试报告 对测试人员来而言,测试的产出很难衡量.换句话说,测试人员的价值比较难以量化和评估,相信这一点对软件测试人员来说深有体会.我们花费了很多时间与精力所做的自动化测试也是如此.所以, ...

  3. unittest单元测试框架总结

    unittest单元测试框架不仅可以适用于单元测试,还可以适用WEB自动化测试用例的开发与执行,该测试框架可组织执行测试用例,并且提供了丰富的断言方法,判断测试用例是否通过,最终生成测试结果.今天笔者 ...

  4. unittest单元测试框架详解

    unittest单元测试框架不仅可以适用于单元测试,还可以适用WEB自动化测试用例的开发与执行,该测试框架可组织执行测试用例,并且提供了丰富的断言方法,判断测试用例是否通过,最终生成测试结果.今天笔者 ...

  5. Selenium+Python ---- 免登录、等待、unittest单元测试框架、PO模型

    1.免登录在进行测试的过程中难免会遇到登录的情况,给测试工作添加了工作量,本文仅提供一些思路供参考解决方式:手动请求中添加cookies.火狐的profile文件记录信息实现.人工介入.万能验证码.去 ...

  6. unittest单元测试框架

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

  7. unittest单元测试框架简单说明

    unittest单元测试框架不仅可以适用于单元测试,还可以适用WEB自动化测试用例的开发与执行,该测试框架可组织执行测试用例,并且提供了丰富的断言方法,判断测试用例是否通过,最终生成测试结果.今天笔者 ...

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

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

  9. unittest单元测试框架总结(转载)

    转载:https://www.cnblogs.com/yufeihlf/p/5707929.html unittest单元测试框架不仅可以适用于单元测试,还可以适用WEB自动化测试用例的开发与执行,该 ...

随机推荐

  1. 启动kafka报错

    启动kafka时 报错: kafka-console-consumer.sh --from-beginning --zookeeper node01:8121,node02:8121,node03:8 ...

  2. 第3节 storm高级应用:1、上次课程回顾,今日课程大纲,storm下载地址、运行过程等

    上次课程内容回顾: ConcurrentHashMap是线程安全的,为什么多线程的时候还不好使,为什么还要加static关键字 1.storm的基本介绍:strom是twitter公司开源提供给apa ...

  3. SystemVerilog Assertion 设计、调试、测试总结(1)

    暑期实习两个月的其中一个任务是:如何在设计中加入断言?以及断言的基本语法.三种应用场景下的断言(如FIFO.FSM.AXI4-lite总线).参考书籍:<System Verilog Asser ...

  4. RCast 66: 射影几何与Rho演算

    Greg Meredith与Isaac DeFrain和Christian Williams一起讨论了射影几何及其在Rho演算中的作用. 原文链接及音频 https://blog.rchain.coo ...

  5. uWSGI, Thread, time.sleep 使用问题

    下面的问题,在flask程序独立运行中,都没有问题,但是部署在 uwsgi 上表现异常: 1. 在http请求处理过程中,产出异步线程,放在线程池中,线程的启动时间有比较明显的延迟. 2. 在异步线程 ...

  6. mysql 子查询问题

    今天在做子查询的时候发现运行报错, 我的代码是select* from (....) device des ,我一直以为的是device是表名,然后dec是别名,后面问了同事才知道from(...)这 ...

  7. QT5安装

    Windows+Qt5.3.1+VS2013安装教程 https://blog.csdn.net/two_ye/article/details/96109876 (已成功)windows下,VS201 ...

  8. 7个现在就该学习Python 的理由【80%的人都不知道】

    Python 是一门更注重可读性和效率的语言,尤其是相较于 Java,PHP 以及 C++ 这样的语言,它的这两个优势让其在开发者中大受欢迎. 诚然,它有点老了,但仍是 80 后啊 —— 至少没有 C ...

  9. js加密(十二)yy.com rsa

    1. url: https://aq.yy.com/ 2. target: 登录js 3. 是一个简单的rsa加密,找到加密的js文件,全部复制出来,修改一下就好. 4. 和网页中的一样

  10. Ruoyi的确不错,不知后续能否坚持 允许商用

    对于一个开源项目,作者的确很优秀: 在我们现在这个环境,能把一个开源项目做到这个规模,相当不容易:给作者点赞: 不过我也心里嘀咕,不知道后面哪天这个哥们突然发声明,不允许商用呢? 先偷偷留个证据,省的 ...