unittest(1)
一、unittest核心概念
1.unittest四个核心概念
2.unittest属性
'TestResult', 'TestCase', 'TestSuite','TextTestRunner', 'TestLoader'
'FunctionTestCase', 'main','defaultTestLoader', 'SkipTest', 'skip',
'skipIf', 'skipUnless','expectedFailure', 'TextTestResult',
'installHandler','registerResult', 'removeResult', 'removeHandler'
from .result import TestResult
from .case import (TestCase, FunctionTestCase, SkipTest, skip, skipIf,
skipUnless, expectedFailure)
from .suite import BaseTestSuite, TestSuite
from .loader import (TestLoader, defaultTestLoader, makeSuite, getTestCaseNames,
findTestCases)
from .main import TestProgram, main
from .runner import TextTestRunner, TextTestResult
from .signals import installHandler, registerResult, removeResult, removeHandler
二、testCase
1.TestCase所含的方法
'addCleanup', 'addTypeEqualityFunc', 'assertAlmostEqual',
'assertAlmostEquals', 'assertCountEqual', 'assertDictContainsSubset',
'assertDictEqual', 'assertEqual', 'assertEquals', 'assertFalse',
'assertGreater', 'assertGreaterEqual', 'assertIn', 'assertIs',
'assertIsInstance', 'assertIsNone', 'assertIsNot', 'assertIsNotNone',
'assertLess', 'assertLessEqual', 'assertListEqual', 'assertLogs',
'assertMultiLineEqual', 'assertNotAlmostEqual', 'assertNotAlmostEquals',
'assertNotEqual', 'assertNotEquals', 'assertNotIn',
'assertNotIsInstance', 'assertNotRegex',
'assertNotRegexpMatches', 'assertRaises', 'assertRaisesRegex',
'assertRaisesRegexp', 'assertRegex', 'assertRegexpMatches',
'assertSequenceEqual', 'assertSetEqual', 'assertTrue',
'assertTupleEqual', 'assertWarns', 'assertWarnsRegex',
'assert_', 'countTestCases', 'debug', 'defaultTestResult',
'doCleanups', 'fail', 'failIf', 'failIfAlmostEqual',
'failIfEqual', 'failUnless', 'failUnlessAlmostEqual',
'failUnlessEqual', 'failUnlessRaises', 'failureException', 'id',
'longMessage', 'maxDiff', 'run', 'setUp', 'setUpClass',
'shortDescription', 'skipTest', 'subTest', 'tearDown',
'tearDownClass'
2.几个常用方法讲解
import unittest class unTest(unittest.TestCase):
def setUp(cls):
print("前置条件执行~\n")
def tearDown(cls):
print("后置条件执行~")
def test_add(self):
print(2+3)
def test_minus(self):
print(3-2)
if __name__ == '__main__':
unittest.main()

import unittest class unTest(unittest.TestCase):
@classmethod
def setUpClass(cls):
print("setUpClass前置条件执行~\n")
@classmethod
def tearDownClass(cls):
print("tearDownClass后置条件执行~")
def test_add(self):
print(2+3)
def test_minus(self):
print(3-2)
if __name__ == '__main__':
unittest.main()

三、TestSuite
import unittest class unTest(unittest.TestCase):
@classmethod
def setUpClass(cls):
print("setUpClass前置条件执行~\n")
@classmethod
def tearDownClass(cls):
print("tearDownClass后置条件执行~")
def test_add(self):
print(2+3)
def test_minus(self):
print(3-2)
if __name__ == '__main__':
unittest.main()
1.按模块加载TestLoader()
import unittest
class unTest(unittest.TestCase):
@classmethod
def setUpClass(cls):
print("setUpClass前置条件执行~\n")
@classmethod
def tearDownClass(cls):
print("tearDownClass后置条件执行~")
def test_add(self):
print(2+3)
def test_minus(self):
print(3-2)
suite=unittest.TestLoader().loadTestsFromTestCase(unTest)
unittest.TextTestRunner(verbosity=2).run(suite)
2.按类加载makeSuite
import unittest
from test01 import * suite=unittest.TestSuite(unittest.makeSuite(unTest02))
unittest.TextTestRunner(verbosity=2).run(suite)
3.addTest方法
import unittest
from test01 import * suite=unittest.TestSuite()
suite.addTest(unTest("test_add"))
suite.addTest(unTest("test_minus"))
suite.addTest(unTest02("test_multi"))
unittest.TextTestRunner(verbosity=2).run(suite)
四、TestLoader
1.loadTestsFromTestCase方法
import unittest
class unTest(unittest.TestCase):
@classmethod
def setUpClass(cls):
print("setUpClass前置条件执行~\n")
@classmethod
def tearDownClass(cls):
print("tearDownClass后置条件执行~")
def test_add(self):
print(2+3)
def test_minus(self):
print(3-2)
#通过类加载,把unTest下面所有的方法都添加到suite中
suite=unittest.TestLoader().loadTestsFromTestCase(unTest)
unittest.TextTestRunner(verbosity=2).run(suite)
2.loadTestsFromModule方法
import unittest
class unTest(unittest.TestCase):
@classmethod
def setUpClass(cls):
print("setUpClass前置条件执行~\n")
@classmethod
def tearDownClass(cls):
print("tearDownClass后置条件执行~")
def test_add(self):
print(2+3)
def test_minus(self):
print(3-2)
class unTest02(unittest.TestCase):
def test_multi(self):
print(2 * 3)
import unittest
import test01#导入模块一:test01 suite=unittest.TestLoader().loadTestsFromModule(test01)
unittest.TextTestRunner(verbosity=2).run(suite)

3.loadTestsFromName方法
import unittest
suite=unittest.TestLoader().loadTestsFromName('test01.unTest.test_minus')
unittest.TextTestRunner(verbosity=2).run(suite)
import unittest
import test01 suite=unittest.TestLoader().loadTestsFromName('unTest.test_minus',test01)
#suite=unittest.TestLoader().loadTestsFromName('unTest.test_minus',module=test01)
unittest.TextTestRunner(verbosity=2).run(suite)
4.loadTestsFromNames方法
import unittest
import test01 suite=unittest.TestLoader().loadTestsFromNames(['unTest.test_minus','unTest.test_add'],test01)
unittest.TextTestRunner(verbosity=2).run(suite)
五、TextTestRunner
unittest.TextTestRunner().run(suite)
六、输出测试报告
1.输出txt格式
import unittest
import test01 suite=unittest.TestLoader().loadTestsFromModule(test01)
filename=r"F:\reports\test.txt"
file=open(filename,'a')
runner=unittest.TextTestRunner(
stream=file,
descriptions=True,
verbosity=2
)
runner.run(suite)
2.输出html格式
filename=“F:\\reports\re.html"
file=open(filename,"wb")
runner = HTMLTestRunner.HTMLTestRunner(
stream=file,
title="测试标题",
description="报告中的文字描述"
)
runner.run(suite)
import unittest
import test01
import HTMLTestReportCN suite=unittest.TestLoader().loadTestsFromModule(test01)
filename=r"F:\reports\test.html"
file=open(filename,'wb')
runner=HTMLTestReportCN.HTMLTestRunner(
stream=file,
title="html测试报告",
tester="joba",
verbosity=2
)
runner.run(suite)
HTMLTestReportCN:以中文形式输出报告,使用形式和HTMLTestRunner差不多,只是在初始化runner稍有差异,可以带tester,对比英文版如下:
unittest(1)的更多相关文章
- 理解unittest(六)
unittest,顾名思义就是一个单元测试框架,但是它不仅适用于单元测试,还适用WEB自动化测试用例的开发与执行,该测试框架可组织执行测试用例,并且提供了丰富的断言方法,判断测试用例是否通过,最终生成 ...
- unittest(一)IDE导出的代码分析
在 Python 语言下有诸多单元测试框架,如 unittest.Pytest.nose 等,其中 unittest 框架(原名 PyUnit 框架)为 Python 语言自带的单元测试框架,从 Py ...
- unittest(简介)
一.unittest框架介绍: unittest框架是python中的一个单元测试框架,该模块包括许多的类如 TestCase 类.TestSuite 类.TextTestRunner 类.TestR ...
- Python单元测试框架:unittest(二)
一.直接使用TestCase 注意所有测试方法都需要以test开头.代码如下: import unittest class Test1(unittest.TestCase): @classmethod ...
- Python unittest(PyUnit)单元测试框架
PyUnit(unittest) 是 Python 自带的单元测试框架,用于编写和运行可重复的测试.PyUnit 是 xUnit 体系的一个成员,xUnit 是众多测试框架的总称,PyUnit 主要用 ...
- unittest(8)- 学习ddt
import unittest from ddt import ddt, data, unpack """ 1.正常情况下,测试函数(即测试用例)中不可以传参,如果要使用 ...
- python单元测试框架-unittest(五)之跳过测试和预期失败
概要 @unittest.skip(reason): skip(reason)装饰器:直接跳过测试,并说明跳过测试的原因. @unittest.skipIf(reason): skipIf(condi ...
- python单元测试框架-unittest(四)之用例综合框架管理
简述为何如要框架? 前面测试用例与执行都是写在一个文件,当用例数量不断增加的时候,用例的执行与管理变得非常麻烦,因此需要对用例根据具体的功能模块来使用单独的模块来管理.就像一所学校要根据不同年级进行分 ...
- python单元测试框架-unittest(三)之用例执行顺序
执行顺序规则: 测试类或测试方法的数字与字母顺序0~9,A-Z 执行如下脚本,理解用例执行顺序 #coding=utf-8 import unittest class Test1(unittest.T ...
随机推荐
- python实现线程池(2.4)
线程池 什么是线程池? 诸如web服务器.数据库服务器.文件服务器和邮件服务器等许多服务器应用都面向处理来自某些远程来源的大量短小的任务. 构建服务器应用程序的一个过于简单的模型是:每当一个请求到达就 ...
- 多图上传控制器及模型代码(2)thinkphp5+layui实现多图上传保存到数据库,可以实现图片自由排序,自由删除。
公共css代码 <style> .layui-upload-img { width: 90px; height: 90px; margin: 0; } .pic-more { width: ...
- 5、通过Appium Desktop实现页面元素定位
之前我们已经安装了Appium Desktop,下面就让我们使用Appium Desktop实现页面元素定位 1.首先我们打开Appium Desktop,进入如下界面,点击Start Server ...
- 剑指offer——38二叉搜索树与双向链表
题目描述 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表.要求不能创建任何新的结点,只能调整树中结点指针的指向. 题解: 在搜索二义树中,左子节点的值总是小于父节点的值,右子节点的值总 ...
- Day 20: 面向对象【多态,封装,反射】字符串模块导入/内置attr /包装 /授权
面向对象,多态: 有时一个对象会有多种表现形式,比如网站页面有个按钮, 这个按钮的设计可以不一样(单选框.多选框.圆角的点击按钮.直角的点击按钮等),尽管长的不一样,但它们都有一个共同调用方式,就是o ...
- Ubuntu建立和删除用户
添加用户: sudo adduser xxx 这样的命令会在home目录下添加一个帐号 sudo useradd xxx 仅仅是添加用户, 不会在home目录添加帐号 删除用户: 在普通用户下:sud ...
- 新建一个servlet类,继承HttpServlet,但是无法导入HttpServlet包
描述: 原因:缺少tomcat的libraries(HttpServlet对应位置在tomcat的lib中====) 解决: 1. 2. 3. 4.
- JavaScript中的面向对象编程,详解原型对象及prototype,constructor,proto,内含面向对象编程详细案例(烟花案例)
面向对象编程: 面向:以什么为主,基于什么模式 对象:由键值对组成,可以用来描述事物,存储数据的一种数据格式 编程:使用代码解决需求 面向过程编程: 按照我们分析好的步骤,按步 ...
- 转: Meshlab简介
本文翻译自Meshlab主页:http://www.meshlab.net/ MeshLab是用于处理和编辑3D三角形网格的开源系统.它提供了一组用于编辑,清理,修复,检查,渲染,纹理和转换网格的工具 ...
- Oracle 修改 新增 触发器 针对字段修改 触发器 误删Oracle表、数据、触发器找回 闪回查询
emmmm 写这个博客心情很复杂,,,本来这个触发器早就写好了,后来发生点事就写个博客当个备份吧,就当留纪念了:话不多数上问题以及SQL: 问题: 在ABONPB表上增加一个触发器,针对车牌号字段做u ...