测试用例执行顺序

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. 学 Win32 汇编[22] - 逻辑运算指令: AND、OR、XOR、NOT、TEST

    AND: 逻辑与 ;该指令会置 CF=OF=; 其结果影响 SF.ZF.PF ;指令格式: AND r/m, r/m/i ; Test22_1.asm - 使用 AND 运算将一个数的第二.四位清零 ...

  2. JVM 源码分析之 javaagent 原理完全解读

    转载:https://infoq.cn/article/javaagent-illustrated 本文重点讲述 javaagent 的具体实现,因为它面向的是我们 Java 程序员,而且 agent ...

  3. 编码(RZ NRZ NRZI)

    Frm: https://jingyan.baidu.com/album/39810a23addccbb637fda66a.html?picindex=1 RZ 编码(Return-to-zero C ...

  4. PAT_A1024#Palindromic Number

    Source: PAT A1024 Palindromic Number (25 分) Description: A number that will be the same when it is w ...

  5. JUC源码分析-集合篇:并发类容器介绍

    JUC源码分析-集合篇:并发类容器介绍 同步类容器是 线程安全 的,如 Vector.HashTable 等容器的同步功能都是由 Collections.synchronizedMap 等工厂方法去创 ...

  6. 编写Storm程序

  7. md详解和rd详解:一次性创建多个目录和多级子目录

    md 命令: 官方解释: E:\ABC>md /? 创建目录. MKDIR [drive:]path MD [drive:]path 如果命令扩展被启用,MKDIR 会如下改变: 如果需要,MK ...

  8. TFS发布的时候出现 ENOENT: no such file or directory, stat 'E:\vsts-agent\_work\r57\a\KingEagle-Mysql-Dev\drop\12917.zip' 解决方案

    出现 ENOENT: no such file or directory, stat 'E:\vsts-agent\_work\r57\a\KingEagle-Mysql-Dev\drop\12917 ...

  9. wp api jwt 403 (Forbidden) -- JWT is not configurated properly, please contact the admin

    需要在 wp-config.php 文件中配置 define('JWT_AUTH_SECRET_KEY', 'your-top-secrect-key'); 參考 403 (Forbidden) -- ...

  10. ps去除元素的三种常用方法

    1.仿制图章工具,alt+鼠标左键进行选取复制区域,然后左键点击需要覆盖的区域. 2.套锁工具--选择区域--右键填充--内容识别.     3.修补工具,选中区域--拖动适配.     附带另一份较 ...