测试用例执行顺序

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. [SCOI2009]迷路(矩阵快速幂) 题解

    Description windy在有向图中迷路了. 该有向图有 N 个节点,windy从节点 0 出发,他必须恰好在 T 时刻到达节点 N-1. 现在给出该有向图,你能告诉windy总共有多少种不同 ...

  2. php开发面试题---vue面试题(vue.js的好处及作用)

    php开发面试题---vue面试题(vue.js的好处及作用) 一.总结 一句话总结: 双向数据绑定:在做ajax的时候,更新实在是太方便了 用数据绑定的思想,vue可以简单写单个页面,也可以写一个大 ...

  3. RFS自动化测试工具安装与使用总结

    转载:http://blog.csdn.net/a5650892/article/details/77826021 一,调试1,在调试时,总时提示“无法打开浏览器”解决办法:1,把浏览器的代理关闭2, ...

  4. TFS 中如何将项目加入已有的源代码管理器中?

    Visual Studio 的某解决方案已经加入 Team Foundation Server,现在再将已经存在的项目加入到解决方案中,可是签入时,并没有把新加入的项目签入,怎么办呢? 在团队资源管理 ...

  5. IDEA上传项目到SVN

    1.打开IDEA ,上面工具栏选择VCS 选择把项目交给SVN管理 2.选择SVN 3.选择SVN管理后可以看到项目变这个颜色 4.右键项目选择如下 5.点击绿色的+号,选择一个SVN仓库的地址,下面 ...

  6. python类的实例方法、静态方法和类方法区别及其应用场景

    https://blog.csdn.net/helloxiaozhe/article/details/79940321 普通实例方法,第一个参数需要是self,它表示一个具体的实例本身. 如果用了st ...

  7. 专题:NFSv4 file server

    Network File System (NFS) is a file system protocol that allows client machines to access network at ...

  8. vue组件通信之父组件主动获取子组件数据和方法

    ref 可以用来获取到dom节点,如果在组件中应用,也可以用来获取子组件的数据和方法. 比如,我定义了一个home组件,一个head组件,home组件中引用head组件. 此时,home组件是head ...

  9. 关于Visual Leak Detector的配置与使用 (测试vector 引起的内存泄漏问题)

    之前在做一个音频特征提取的批量处理程序,老是出现内存泄露问题,用Visual Leak Detector(VLD)工具做了下检测,检测出了一些问题,解决后还是会有问题.之后继续排查,因为我的代码中,大 ...

  10. js文本框焦点自动聚焦到下个文本框

    HTML: <form> <input type="text" name="text1" maxlength="3" si ...