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 ...
随机推荐
- L1-027 出租
下面是新浪微博上曾经很火的一张图: 一时间网上一片求救声,急问这个怎么破.其实这段代码很简单,index数组就是arr数组的下标,index[0]=2 对应 arr[2]=1,index[1]=0 对 ...
- 201621123010《Java程序设计》第9周学习总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结集合与泛型相关内容. 2. 书面作业 本次作业题集集合 1. List中指定元素的删除(题集题目) 1.1 实验总结.并回答:列举至 ...
- 0122有关List、Set、Map的练习
import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; public class SZYL { ...
- zabbix监控系统的配置
一.zabbix介绍 zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案. zabbix能监视各种网络参数,保证服务器系统的安全运营:并提供灵活的通知机制以让系 ...
- 降低版本安装flashPlayer
运行regedit,打开注册表. 搜索flash,找到FlashPlayer文件夹. 打开里面的safeversions,把里面高版本的项目删除就可以了. 安装低版本的并设置不自动更新.
- 2N7002
就相当于一个开关,当G>S的一定电压就导通,若没有达到就没有导通. 并且注意的是D脚不能直接接电压,中间要接一个电阻. 这用是G输入,S接地,D输出. 跟三极管差不多.分N和P
- BZOJ3925: [Zjoi2015]地震后的幻想乡【概率期望+状压DP】
Description 傲娇少女幽香是一个很萌很萌的妹子,而且她非常非常地有爱心,很喜欢为幻想乡的人们做一些自己力所能及的事情来帮助他们. 这不,幻想乡突然发生了地震,所有的道路都崩塌了.现在的首要任 ...
- BZOJ4872: [Shoi2017]分手是祝愿【概率期望DP】【思维好题】
Description Zeit und Raum trennen dich und mich. 时空将你我分开.B 君在玩一个游戏,这个游戏由 n 个灯和 n 个开关组成,给定这 n 个灯的初始状态 ...
- zzuli2228: 神奇的排名
题目描述 小明最近沉迷上了打codeforces的比赛,和acm不同的是,这种比赛是积分制的,按照做题用时,错误次数以及hack来计分的.在某一场比赛,共有n个人参加比赛,现在给出你所有人的分数,小明 ...
- 新建Android一个项目-菜鸟篇
①打开Eclipse,单击菜单栏的“File”->把鼠标光标移动到“New”->在弹出的列表框中,如果直接能看到“Android Applicaion Project”选项项,则直接单击此 ...