测试用例执行顺序

1.setUp和tearDown相关

setUp:表示前置条件,它在每一个用例执行之前必须会执行一次 
      setUp可以理解为我们需要自动化测试时,需要打开网页窗口,输入对应测试地址,这一些属于前置条件。
tearDown:表示释放资源,它在每次用例执行完之后会执行一次
tearDown可以理解为我们测试完毕后,需要关闭浏览器。
 

2.默认执行顺序

类内的普通方法执行顺序会默认按方法的字母asc码大小执行
import unittest
class myTest(unittest.TestCase):
def setUp(self):
print("前置测试条件")
def tearDown(self):
print("后置测试条件")
def test02(self):
print("普通方法1")
def test01(self):
print("普通方法2")
if __name__ == '__main__':
unittest.main()
执行结果:

(1)setUp和tearDown每执行一个方法就要执行一次
(2)普通方法的执行顺序会按方法名的asc码大小从小的开始执行
一般情况下测试用例会根据方法名的asc码大小从小的开始执行,这是最基本的执行方式也是最大的执行方式
 

3.TestSuite套件的使用

TestSuite可以使得用例按添加的顺序执行,先添加的先执行,后添加的后执行
使用方法:
(1)先初始化测试套件: suite=unittest.TestSuite()
(2)把测试用例添加到测试集合中: suite.addTest(类名("方法名"))
(3)执行测试用例: unittest.TextTestRunner().run(suite)

import unittest
class myTest(unittest.TestCase):
def test_f1(self):
print("普通方法1")
def test_f2(self):
print("普通方法2")
def test_f3(self):
print("普通方法3")
if __name__ == '__main__':
suite=unittest.TestSuite()
suite.addTest(myTest("test_f1"))
suite.addTest(myTest("test_f2"))
suite.addTest(myTest("test_f3"))
unittest.TextTestRunner().run(suite)
执行的结果是:

但是有一种情况,当使用了TestSuite套件,但是方法名的asc码大小又是跟添加的顺序相反的时候,会优先按方法名asc码从小到大执行,此时TestSuite套件会失效

import unittest
class myTest(unittest.TestCase):
def test_c(self):
print("普通方法1")
def test_b(self):
print("普通方法2")
def test_a(self):
print("普通方法3")
if __name__ == '__main__':
suite=unittest.TestSuite()
suite.addTest(myTest("test_c"))
suite.addTest(myTest("test_b"))
suite.addTest(myTest("test_a"))
unittest.TextTestRunner().run(suite)
执行的结果是:

4.类执行方式

类执行方法可以避免多次添加suite.addTest
用法:实例化suite时,添加一个makesuite, suite=unittest.TestSuite(unittest.makesuite(类名))

import unittest
class myTest(unittest.TestCase):
def test_01(self):
print("普通方法1")
def test_02(self):
print("普通方法2")
def test_03(self):
print("普通方法3")
if __name__ == '__main__':
suite=unittest.TestSuite(unittest.makesuite(myTest))
unittest.TextTestRunner().run(suite)
执行结果:

5.按加载模块来执行

一般一个模块有多个类时,同时想执行该模块所有类中的方法,就用加载模块
用法:suite=unittest.TestLoader().loadTestsFromModule("模块名.py")
import unittest
class myTest(unittest.TestCase):
def test_01(self):
print("普通方法1")
def test_02(self):
print("普通方法2")
def test_03(self):
print("普通方法3") class myTest02(unittest.TestCase):
def test_mytest01(self):
print("类test_mytest01的方法01")
def test_mytest02(self):
print("类test_mytest01的方法02") if __name__ == '__main__':
suite=unittest.TestLoader().loadTestsFromModule("unit01.py")
unittest.TextTestRunner(verbosity=2).run(suite)
执行结果:

unittest(2)的更多相关文章

  1. python_单元测试unittest

    Python自带一个单元测试框架是unittest模块,用它来做单元测试,它里面封装好了一些校验返回的结果方法和一些用例执行前的初始化操作. 步骤1:首先引入unittest模块--import un ...

  2. python单元测试unittest

    单元测试作为任何语言的开发者都应该是必要的,因为时隔数月后再回来调试自己的复杂程序时,其实也是很崩溃的事情.虽然会很快熟悉内容,但是修改和 调试将是一件痛苦的事情,如果你在修改了代码后出现问题的话,而 ...

  3. Python 下的unittest测试框架

    unittest测试框架,直接上图吧: data:数据:主要格式为CSV:读取方式:csv.reade: public:封装的模块:通用的模块单独封装,所需参数设置为变量: testcase:测试用例 ...

  4. Python unittest appium

    import unittest from appium import webdriver from appium.common.exceptions import NoSuchContextExcep ...

  5. selenium-webdriver(python) (十六) --unittest 框架

    学习unittest 很好的一个切入点就是从selenium IDE 录制导出脚本.相信不少新手学习selenium 也是从IED 开始的. IDE学习参考: 菜鸟学自动化测试(一)----selen ...

  6. Node.js的UnitTest单元测试

    body{ font: 16px/1.5em 微软雅黑,arial,verdana,helvetica,sans-serif; } 在专业化的软件开发过程中,无论什么平台语言,现在都需要UnitTes ...

  7. unittest使用过程中sys.exit(not self.result.wasSuccessful())

    起因: 在运行下面的unittest过程中出现了个Traceback: 被测试脚本: # splitter.py def split(line, types=None, delimiter=None) ...

  8. 三言两语聊Python模块–单元测试模块unittest

    实际上unittest模块才是真正意义上的用于测试的模块,功能强大的单元测试模块. 继续使用前面的例子: # splitter.py def split(line, types=None, delim ...

  9. unittest测试驱动之HTMLTestRunner.py

    对于自动化来说,测试报告是必须的,在敏捷化的团队中,团队中的成员需要自动化这边提供自动化的测试报告,来判断系统的整体质量以及下一步的测试策略.单元测试库生成测试输出到控制台的窗口上,但是这样的结果看起 ...

  10. unittest可能面临的问题以及解决方法

    问题1:用例的执行顺序 当使用unittest.main()时,用例的执行是按照ascall值的顺序来执行的,所以如果使用main()方法来执行用例的话,那么就需要通过命名来限制执行顺序,比如想要先执 ...

随机推荐

  1. iOS: NSTimer使用小记

    目录 1. NSRunLoopCommonModes和Timer 2. NSThread和Timer 3. GCD中的Timer 返回目录 1. NSRunLoopCommonModes和Timer ...

  2. 最全的PS快捷键大全!

    一.工具箱 01.(多种工具共用一个快捷键的可同时按[Shift]加此快捷键选取)02.矩形.椭圆选框工具 [M]03.裁剪工具[C]04.移动工具[V]05.套索.多边形套索.磁性套索[L]06.魔 ...

  3. thinkphp 使用redis 整理(二) mark 一下

    参考手册   http://www.cnblogs.com/weafer/archive/2011/09/21/2184059.html redis  几种数据类型选择,参考 :  https://b ...

  4. PHP中文无乱码截取

    正在上传文件反正无聊 就把php无乱码截取写出来吧` 参数说明 gbk    字符编码中,存储中文字符要2个字节 uft-8  字符编码中,存储中文字符要3个字节 0xa0  半个汉字 ord()—  ...

  5. makefile.new(7117) : error U1087: cannot have : and :: dependents for same target

    makefile.new(7117) : fatal error U1087: cannot have : and :: dependents for same target(2012-05-21 2 ...

  6. 【hive 日期函数】Hive常用日期函数整理

    1.to_date:日期时间转日期函数 select to_date('2015-04-02 13:34:12');输出:2015-04-02122.from_unixtime:转化unix时间戳到当 ...

  7. jQuery 对文档的操作

    通过jquery方式实现页面各种节点的追加.修改.删除.复制等操作 节点追加 1 父子关系追加 /*************************************************** ...

  8. 2014 mathtype分块列向量输入 PPT动画制作

    1.mathtype分块列向量的输入 http://zhidao.baidu.com/link?url=pV7TazWe-Ld5qgxNcJCQdRaA8ILEgmXRP211F5U0Cst0xNfU ...

  9. JVM 简述

    JVM(Java Virtual Machine,Java虚拟机) Java程序的跨平台特性主要是指字节码文件可以在任何具有Java虚拟机的计算机或者电子设备上运行,Java虚拟机中的Java解释器负 ...

  10. D题 Robots 【期望】

    Robots Given a directed graph with no loops which starts at node 11 and ends at node nn.There is a r ...