python unittest单元测试框架-3用例执行顺序、多级目录、装饰器、fixtures
1.用例执行顺序
unittest默认会按照ascii码的顺序,依次执行。类名——方法名排序,使用discover也是默认排序。如果不想使用默认排序,就使用testsuite测试集的方式。
import unittest
class TestB(unittest.TestCase):
def setUp(self):
print("class B start")
def testC(self):
print("func c")
def testA(self):
print("func a ")
def tearDown(self):
print("class B end")
class TestA(unittest.TestCase):
def setUp(self):
print("class A start")
def testB(self):
print("func b")
def tearDown(self):
print("class A end")
if __name__=="__main__":
unittest.main()

discover,新建runtest.py文件
import unittest
test_dir="./"
discover=unittest.defaultTestLoader.discover(test_dir,pattern="testorder.py")
if __name__=="__main__":
runner=unittest.TextTestRunner()
runner.run(discover)

suite
if __name__=="__main__":
suite=unittest.TestSuite()
suite.addTest(TestB("testA"))
suite.addTest(TestA("testB"))
suite.addTest(TestB("testC"))
runner = unittest.TextTestRunner()
runner.run(suite)

2.多级目录
执行多级目录,只需要在每个子目录下面添加__init__文件即可

test_a.py
import unittest
class TestA(unittest.TestCase):
def setUp(self):
pass
def test(self):
print("A")
def tearDown(self):
pass
test_b,test_c,test_d只是将test中输出更改为B C D
runtest.py
import unittest
test_dir="./"
discover=unittest.defaultTestLoader.discover(test_dir,pattern="test*.py")
if __name__=="__main__":
runner=unittest.TextTestRunner()
runner.run(discover)

3.装饰器:跳过测试和执行失败
运行测试时,需要跳过某些测试用例,或预期失败,此时unittest提供了装饰器来实现这些需求。
装饰器同样适用于类
| 装饰器 | 说明 |
|---|---|
| unittest.skip(原因) | 无条件的跳过测试 |
| unittest.skipIf(条件, 原因) | 如果条件为真,就跳过测试;否则执行测试 |
| unittest.skipUnless(条件, 原因) | 如果条件为真,就执行测试;否则跳过测试 |
| unittest.expectedFailure | 预期失败。执行结果失败,pass;执行结果成功,fail |
import unittest
class MyTest(unittest.TestCase):
@unittest.skip("直接跳过test_skip")
def test_aaa(self):
print("直接跳过test_aaa\n")
@unittest.skipIf(3>2,"条件为true时,跳过test_skipIf")
def test_bbb(self):
print("跳过test_bbb\n")
@unittest.skipUnless(3>2,"条件为true时,执行测试test_skipUnless")
def test_ccc(self):
print("执行测试test_ccc\n")
@unittest.expectedFailure
def test_ddd(self):
print("test_ddd执行完毕\n")
@unittest.expectedFailure
def test_eee(self):
self.assertEqual(2,3)
if __name__=="__main__":
unittest.main()

4.fixtures
除了用例的fixtures,unittest还提供了更大范围的fixtures,如针对模块和类的
- setUpModule/tearDownModule:在整个模块的开始于结束是被执行
- setUpClass/earDownClass:在测试类的开始与结束时被执行
- setUp/tearDown:在测试用例的开始与结束时被执行
import unittest
def setUpModule():
print("模块:初始化")
def tearDownModule():
print("模块:销毁")
class Test(unittest.TestCase):
@classmethod
def setUpClass(cls):
print("类:初始化")
@classmethod
def tearDownClass(cls):
print("类:销毁")
def setUp(self):
print("用例:初始化")
def tearDown(self):
print("用例:销毁")
def test_case1(self):
print("用例1执行")
def test_case2(self):
print("用例2执行")
if __name__=="__main__":
unittest.main()

python unittest单元测试框架-3用例执行顺序、多级目录、装饰器、fixtures的更多相关文章
- 【Android自动化】unittest测试框架关于用例执行的几种方法
# -*- coding:utf-8 -*- import unittest class test(unittest.TestCase): def setUp(self): print 'This i ...
- python unittest单元测试框架-2discover
基于TestLoader提供的discover方法实现用例执行 当用例达达到数十条后,在runtest.py文件中通过addTest()添加/删除测试用例就非常麻烦.此时可以使用discover方法找 ...
- python unittest单元测试框架-1
Test Case.Test Suite.Test Runner.Test Fixture Test Case:单个测试用例 Test Suite:测试组合.可以把多个测试用例集合在一起执行. Tes ...
- Selenium实战(四)——unittest单元测试3(测试用例的执行顺序)
一.测试用例的执行顺序 层级:多个测试目录 > 多个测试文件 > 多个测试类 > 多个测试方法(测试用例).在这里以一个测试执行顺序的脚本为例test_order.py import ...
- python单元测试框架-unittest(三)之用例执行顺序
执行顺序规则: 测试类或测试方法的数字与字母顺序0~9,A-Z 执行如下脚本,理解用例执行顺序 #coding=utf-8 import unittest class Test1(unittest.T ...
- Python+selenium之简单介绍unittest单元测试框架
Python+selenium之简单介绍unittest单元测试框架 一.unittest简单介绍 unittest支持测试自动化,共享测试用例中的初始化和关闭退出代码,在unittest中最小单元是 ...
- Python+Selenium框架设计篇之-简单介绍unittest单元测试框架
前面文章已经简单介绍了一些关于自动化测试框架的介绍,知道了什么是自动化测试框架,主要有哪些特点,基本组成部分等.在继续介绍框架设计之前,我们先来学习一个工具,叫unittest. unit ...
- Python+Selenium ----unittest单元测试框架
unittest是一个单元测试框架,是Python编程的单元测试框架.有时候,也做叫做“PyUnit”,是Junit的Python语言版本.这里了解下,Junit是Java语言的单元测试框架,Java ...
- Python 单元测试框架系列:聊聊 Python 的单元测试框架(一):unittest
作者:HelloGitHub-Prodesire HelloGitHub 的<讲解开源项目>系列,项目地址:https://github.com/HelloGitHub-Team/Arti ...
随机推荐
- 给tabBarItem加点击效果动画
获取到tabBarItem,添加喜欢的动画 .h文件 @interface JGTabBarController () //记录上一次点击tabbar @property (nonatomic, as ...
- SharePoint BDC(Business Data Connectivity)服务-PowerShell
1. 获取BCS服务应用程序的标识 Get-SPServiceApplication 2. 获取指定的BCS服务应用程序实例 $bcs = Get-SPServiceApplication -Iden ...
- Linux内核参数优化记录
//fs.file-max 最大打开文件数 //fs.nr_open=20480000 单个进程允许打开的文件句柄上限 //信号量及共享内存,可以使用ipcs -l来获取 //kernel.sem 信 ...
- mysql 删除表中记录
一.清除mysql表中数据 delete from 表名;truncate table 表名;不带where参数的delete语句可以删除mysql表中所有内容,使用truncate table也可以 ...
- RCNN、SPP-net、Fast-RCNN和Faster-RCNN
RCNN RCNN (Regions with CNN features) 的核心思想是把图像划分成N(2000)个独立的区域,分别提取每个区域的CNN特征,然后把这些特征使用SVM等分类器进行结果预 ...
- magento建立多语言网站
默认Magento仅仅有English语言包,所以如果想也显示中文,就要安装中文语言包. 步骤: 1. 首先,去http://www.magentocommerce.com/langs/list/下载 ...
- Vec3b类型数据确定颜色通道
前言 这几天实习生测试一张图像的三个通道分别是什么颜色,使用的是Vec3b类型,然后发现了一个有意思的点.. 测试过程 先创建了一定大小的数据, Mat test( , , CV_8UC3, Scal ...
- CF1119 Global Round 2
CF1119A Ilya and a Colorful Walk 这题二分是假的.. \(1,2,1,2,1\) 有间隔为 \(3\) 的,但没有间隔为 \(2\) 的.开始被 \(hack\) 了一 ...
- HDU 1114:Piggy-Bank(完全背包)
Piggy-Bank Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total ...
- MyBatis-动态SQL的if、choose、when、otherwise、trim、where、set、foreach使用(各种标签详解), 以及实体间关系配置
比较全的文档:https://www.cnblogs.com/zhizhao/p/7808880.html 或 https://blog.csdn.net/zhll3377/article/detai ...