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的更多相关文章

  1. 【Android自动化】unittest测试框架关于用例执行的几种方法

    # -*- coding:utf-8 -*- import unittest class test(unittest.TestCase): def setUp(self): print 'This i ...

  2. python unittest单元测试框架-2discover

    基于TestLoader提供的discover方法实现用例执行 当用例达达到数十条后,在runtest.py文件中通过addTest()添加/删除测试用例就非常麻烦.此时可以使用discover方法找 ...

  3. python unittest单元测试框架-1

    Test Case.Test Suite.Test Runner.Test Fixture Test Case:单个测试用例 Test Suite:测试组合.可以把多个测试用例集合在一起执行. Tes ...

  4. Selenium实战(四)——unittest单元测试3(测试用例的执行顺序)

    一.测试用例的执行顺序 层级:多个测试目录 > 多个测试文件 > 多个测试类 > 多个测试方法(测试用例).在这里以一个测试执行顺序的脚本为例test_order.py import ...

  5. python单元测试框架-unittest(三)之用例执行顺序

    执行顺序规则: 测试类或测试方法的数字与字母顺序0~9,A-Z 执行如下脚本,理解用例执行顺序 #coding=utf-8 import unittest class Test1(unittest.T ...

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

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

  7. Python+Selenium框架设计篇之-简单介绍unittest单元测试框架

    前面文章已经简单介绍了一些关于自动化测试框架的介绍,知道了什么是自动化测试框架,主要有哪些特点,基本组成部分等.在继续介绍框架设计之前,我们先来学习一个工具,叫unittest.       unit ...

  8. Python+Selenium ----unittest单元测试框架

    unittest是一个单元测试框架,是Python编程的单元测试框架.有时候,也做叫做“PyUnit”,是Junit的Python语言版本.这里了解下,Junit是Java语言的单元测试框架,Java ...

  9. Python 单元测试框架系列:聊聊 Python 的单元测试框架(一):unittest

    作者:HelloGitHub-Prodesire HelloGitHub 的<讲解开源项目>系列,项目地址:https://github.com/HelloGitHub-Team/Arti ...

随机推荐

  1. 【DevExpress v17.2新功能预告】WinForms上的图表增强

    在WinForms Charts v17.2中,我们新增了一些有用的功能,开发人员和最终用户可能都会喜欢. 基于标准的过滤 Chart控件已经支持一系列的过滤,但是在这个版本中,我们用FilterCr ...

  2. 组件的 keep-alive 简介

    本篇文章,我们来讲一下keep-alive的实现.  更容易看懂 Vue中,有三个内置的抽象组件,分别是keep-alive.transition和transition-group, 它们都有一个共同 ...

  3. twisted服务器端客户端通信(转载填坑)

    服务器端代码 # -*- coding:UTF-8 -*- from time import ctime from twisted.internet import reactor from twist ...

  4. Iterator、Iteratable与ListIterator

    Iteratable: public interface Iterable<T> { Iterator<T> iterator(); default void forEach( ...

  5. I.MX6 Ar8031 device register hacking

    /***************************************************************************** * I.MX6 Ar8031 device ...

  6. ScrollView在布局中的作用

    ScrollView就是滚动一个View,将View里面的内容滚动起来. 但是由于scroolview只能有一个孩子,因此我们可以在ScrollView中在定义一个布局. 这样的话,我们就会直接滚动整 ...

  7. elastic job简单用法

    public class JobMain { //配置注册中心 private ZookeeperConfiguration zkConfig = new ZookeeperConfiguration ...

  8. Java-JDK & Android SDK下载安装及配置教程

    转自:http://blog.csdn.net/dr_neo/article/details/49870587 第一步.安装JDK: 第二步.安装Eclipse: 第三步.下载并安装AndroidSD ...

  9. Oracle集合类型

    Oracle集合类型介绍   集合类型   1. 使用条件:    a. 单行单列的数据,使用标量变量 .     b. 单行多列数据,使用记录    c. 单列多行数据,使用集合        *集 ...

  10. kettle--变量的使用

    一.kettle的inner join 需求: 目前本地文件系统上有一个person.csv文件: 数据库中有一个person表: 现在需要将这两张表做inner join的操作. 1.1首先我们写一 ...