如何提高网站关键词排名,国外做机器的好的网站,全球搜索大全,哪个网站推广比较好简介 大多数的初学者在使用 unittest 框架时候#xff0c;不清楚用例的执行顺序到底是怎样的。对测试类里面的类和方法分不清楚#xff0c;不知道什么时候执行#xff0c;什么时候不执行。虽然或许通过代码实现了#xff0c;也是稀里糊涂的一知半解#xff0c;这样还好不清楚用例的执行顺序到底是怎样的。对测试类里面的类和方法分不清楚不知道什么时候执行什么时候不执行。虽然或许通过代码实现了也是稀里糊涂的一知半解这样还好好歹自己鼓
捣出了但是时间和效率并不是很高下次遇到还是老样子。那么本篇通过最简单案例来给给为小伙伴详细讲解、演示一下 unittest 执行顺序。
一线大厂测试开发讲解的一整套unittest自动化测试框架全程干货详细讲解_哔哩哔哩_bilibili一线大厂测试开发讲解的一整套unittest自动化测试框架全程干货详细讲解共计13条视频包括unittest之框架详解、unittest之单元测试框架对比、unittest之单元测试框架的租用等UP主更多精彩视频请关注UP账号。https://www.bilibili.com/video/BV1Ss4y1b7zA/?spm_id_from333.999.0.0
实例代码 参考代码 1 # codingutf-82 #1.先设置编码utf-8可支持中英文如上一般放在第一行3 4 #2.注释包括记录创建时间创建人项目名称。5 6 Created on 2019-4-237 author: 0008 Project:学习和使用unittest框架编写测试用例执行顺序9
10 #3.导入unittest模块
11 import unittest
12 #4.执行顺序和运行测试
13 import unittest
14
15 class TestLogin(unittest.TestCase):
16
17 def test_login_blog(self):
18 登录
19
20 :return:
21
22
23 def test_add_essay(self):
24 添加
25
26 :return:
27
28
29 def test_release_essay(self):
30 发布
31
32 :return:
33
34
35 def test_quit_blog(self):
36 退出
37
38 :return:
39
40 if __name__ __main__():
41 unittest.main()
这是一个标准的使用unittest进行测试的例子写完后心里美滋滋嗯就按照一贯思路代码会按照这个顺序测就可以了。结果一运行。就傻眼了 这时候自己心里犯嘀咕这是什么鬼怎么回事呢。执行的顺序乱了。第一个执行的测试用例并不是登录博客园而是添加随笔此时用户还没登录博客园进行添加随笔的话会直接报错导致用例失败。
到这里有些小伙伴可能会说为什么要让测试用例之间有所依赖呢 的确如果完全没依赖测试用例的执行顺序是不需要关注的。但是这样对于用例的设计和实现要求就高了许多。而对博客园来说一个系统内的操作是有很大的关联性的。以添加随笔为例随笔内的每个操作都有一个前提你需要
登录博客园才能添加随笔。所以要实现用例之间的完全解耦需要每个用例开始之前检测用户的登录状态。 如果可以控制测试用例的执行顺序按照功能流程一遍走下来节省的代码量是非常可观的阅读测试用例也会清晰明了许多。
如何控制unittest用例执行的顺序呢
1、带大家先看看源码unittest是怎么样对用例进行排序的。在loader.py的loadTestsFromTestCase方法里边调用了getTestCaseNames方法来获取测试用例的名称 2、从源码可以清楚地看到getTestCaseNames方法对测试用例的名称进行了排序 3、一步一步跟进去查看其排序方法 4、根据排序规则unittest执行测试用例默认是根据ASCII码的顺序加载测试用例数字与字母的顺序为0-9A-Za-z。
5、做个小demo看看是不是我们所说的那种排序规则 6、从上边的运行结果我们可以看出是unittest执行测试用例默认是根据ASCII码的顺序加载测试用例数字与字母的顺序为0-9A-Za-z。
7、基于unittest的机制如何控制用例执行顺序呢查了一些网上的资料主要介绍了两种方式
方式1通过TestSuite类的addTest方法按顺序加载测试用例 参考代码 1 # codingutf-82 #1.先设置编码utf-8可支持中英文如上一般放在第一行3 4 #2.注释包括记录创建时间创建人项目名称。5 6 Created on 2019-4-237 author: 0008 Project:学习和使用unittest框架编写测试用例执行顺序9
10 #3.导入unittest模块
11 import unittest
12 #4.执行顺序和运行测试
13 import unittest
14
15 class TestLogin(unittest.TestCase):
16
17 def setUp(self):
18 pass
19 def test_login_blog(self):
20 登录
21
22 :return:
23
24 print(登录)
25 def test_add_essay(self):
26 添加
27
28 :return:
29
30 print(添加)
31 def test_release_essay(self):
32 发布
33
34 :return:
35
36 print(发布)
37 def test_quit_blog(self):
38 退出
39
40 :return:
41
42 print(退出)
43
44 def tearDown(self):
45 pass
46 if __name__ __main__:
47 # 启动单元测试
48 # unittest.main()
49
50 # 获取TestSuite的实例对象
51 suite unittest.TestSuite()
52
53 # 将测试用例添加到测试容器中
54 suite.addTest(TestLogin(test_login_blog))
55 suite.addTest(TestLogin(test_add_essay))
56 suite.addTest(TestLogin(test_release_essay))
57 suite.addTest(TestLogin(test_quit_blog))
58
59 # 创建TextTestRunner类的实例对象
60 runner unittest.TextTestRunner()
61 runner.run(suite)
62 #unittest.TextTestRunner(verbosity3).run(suite)
方式2通过修改函数名的方式 参考代码 1 # codingutf-82 #1.先设置编码utf-8可支持中英文如上一般放在第一行3 4 #2.注释包括记录创建时间创建人项目名称。5 6 Created on 2019-4-237 author: 0008 Project:学习和使用unittest框架编写测试用例执行顺序9
10 #3.导入unittest模块
11 import unittest
12 #4.执行顺序和运行测试
13 import unittest
14
15 class TestLogin(unittest.TestCase):
16
17 def setUp(self):
18 pass
19 def test_1_login_blog(self):
20 登录
21
22 :return:
23
24 print(登录)
25 def test_2_add_essay(self):
26 添加
27
28 :return:
29
30 print(添加)
31 def test_3_release_essay(self):
32 发布
33
34 :return:
35
36 print(发布)
37 def test_4_quit_blog(self):
38 退出
39
40 :return:
41
42 print(退出)
43
44 def tearDown(self):
45 pass
46 if __name__ __main__:
47 # 启动单元测试
48 unittest.main()
拓展练习
1、实例 2、运行结果 3、运行结果分析
1、从运行结果可以看出执行顺序 start!-执行测试用例 01-end! start!-执行测试用例 02-end! start!-执行测试用例 03-end!
2、从执行结果可以看出几点 --先执行的前置 setUp然后执行的用例(test*)最后执行的后置 tearDown --测试用例test*的执行顺序是根据 01-02-03 执行的也就是说根据用例名称来顺序执行的 --addtestself这个方法没执行,说明只执行 test 开头的用例
参考代码 1 # codingutf-82 #1.先设置编码utf-8可支持中英文如上一般放在第一行3 4 #2.注释包括记录创建时间创建人项目名称。5 6 Created on 2019-4-237 author: 0008 Project:学习和使用unittest框架编写测试用例思路9
10 #3.导入unittest模块
11 import unittest
12
13 #4.执行顺序和运行测试
14 import time
15 class Test(unittest.TestCase):
16 def setUp(self):
17 print (start!)
18 def tearDown(self):
19 time.sleep(1)
20 print (end!)
21 def test01(self):
22 print (执行测试用例 01)
23 def test03(self):
24 print (执行测试用例 03)
25 def test02(self):
26 print (执行测试用例 02)
27 def addtest(self):
28 print (add 方法)
29 if __name__ __main__:
30 unittest.main()
小结
1、这个执行顺序看似简单实则不简单只有掌握最简单的才可以应付最复杂的。
2、setUp()和tearDown()方法有什么用呢设想你的测试需要启动一个数据库这时就可以在setUp()方法中连接数据库在tearDown()方法中关闭数据库这样不必在每个测试方法中重复相同的代码。
总结在测试行业摸爬滚打也有十几年了在学习的途中也是收藏了很多的学习资源下面是软件测试到测试开发全职业生涯全套学习资料
【需要的可以点击下方官方推广小卡片扫码备注000免费领取】