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 ...
随机推荐
- this关键字的使用!
class Student{ String name; int age; Student(String name,int age){ this.name=name; this.age=age; } S ...
- libcmt.lib(crt0dat.obj) : error LNK2005: _amsg_exit 已经在 MSVCRTD.lib(MSVCR110D.dll) 中定义
问题描述(VC2012): 1>MSVCRTD.lib(cinitexe.obj) : warning LNK4098: 默认库"libcmt.lib"与其他库的使用冲突:请 ...
- elasticsearch中TermQuery查不到数据问题
在java rest client中调用elasticsearch中的数据,精准匹配的termQuery查不到数据,这个问题是java rest client客户端自带的bug,换用matchPhra ...
- 9.3.1 The assign and deassign procedural statements
IEEE Std 1364™-2001, IEEE Standard Verilog® Hardware Description Language The assign procedural cont ...
- 专题:LFS构建逻辑理解
严格来说,LFS只能称为“pseudo LFS”,WHY? 因为LFS归根结底,还是基于已有的操作系统平台构建而来,并非真正的从0开始,它没有突破所谓“鸡与蛋”的死循环:但它确实有助于理解Linux的 ...
- 什么是NVMe硬盘?
本文摘自:https://zhidao.baidu.com/question/590890784.html NVMe硬盘指的是非易失性内存主机控制器接口规范(Non-Volatile Memory e ...
- 你真的懂return吗?
递归算法中什么时候用return啥时候不用呢? 使用2个例子来说明:快速排序和二分查找 # 二分查找def binarySearch (arr, l, r, x): # 基本判断 if r >= ...
- tensorflow 训练最后预测结果为一个定值,可能的原因
训练一个分类网络,没想到预测结果为一个定值. 找了很久发现,是因为tensor的维度的原因. 注意:我说的是我的label数据的维度. 我的输入是: y_= tf.placeholder(tf.in ...
- c# Winform 多线程操作
主要是对一个过程需要的时间很长执行时会出现界面假死的情况 方法1: Application.DoEvents(),这种方法当你拖动窗体时,界面不会假死.但在你拖动时代码不再执行,也就是阻塞了,当你不再 ...
- POJ 2135 /// 最小费用流最大流 非负花费 BellmanFord模板
题目大意: 给定一个n个点m条边的无向图 求从点1去点n再从点n回点1的不重叠(同一条边不能走两次)的最短路 挑战P239 求去和回的两条最短路很难保证不重叠 直接当做是由1去n的两条不重叠的最短路 ...