当前位置: 首页 > news >正文

用windows建设网站好吗徐州网站建设方案优化

用windows建设网站好吗,徐州网站建设方案优化,wordpress转typecho插件,网站备案审核需要多久简介 大多数的初学者在使用 unittest 框架时候,不清楚用例的执行顺序到底是怎样的。对测试类里面的类和方法分不清楚,不知道什么时候执行,什么时候不执行。虽然或许通过代码实现了,也是稀里糊涂的一知半解,这样还好&am…

简介

  大多数的初学者在使用 unittest 框架时候,不清楚用例的执行顺序到底是怎样的。对测试类里面的类和方法分不清楚,不知道什么时候执行,什么时候不执行。虽然或许通过代码实现了,也是稀里糊涂的一知半解,这样还好,好歹自己鼓

捣出了,但是时间和效率并不是很高,下次遇到还是老样子。那么本篇通过最简单案例来给给为小伙伴详细讲解、演示一下 unittest 执行顺序。

一线大厂测试开发讲解的一整套unittest自动化测试框架,全程干货,详细讲解_哔哩哔哩_bilibili一线大厂测试开发讲解的一整套unittest自动化测试框架,全程干货,详细讲解共计13条视频,包括:unittest之框架详解、unittest之单元测试框架对比、unittest之单元测试框架的租用等,UP主更多精彩视频,请关注UP账号。https://www.bilibili.com/video/BV1Ss4y1b7zA/?spm_id_from=333.999.0.0

实例代码

参考代码

 1 # coding=utf-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.pyloadTestsFromTestCase方法里边,调用了getTestCaseNames方法来获取测试用例的名称

2、从源码可以清楚地看到,getTestCaseNames方法对测试用例的名称进行了排序

3、一步一步跟进去,查看其排序方法

4、根据排序规则,unittest执行测试用例,默认是根据ASCII码的顺序加载测试用例,数字与字母的顺序为:0-9,A-Z,a-z。

5、做个小demo,看看是不是我们所说的那种排序规则

6、从上边的运行结果,我们可以看出是:unittest执行测试用例,默认是根据ASCII码的顺序加载测试用例,数字与字母的顺序为:0-9,A-Z,a-z。

7、基于unittest的机制,如何控制用例执行顺序呢?查了一些网上的资料,主要介绍了两种方式:

方式1,通过TestSuite类的addTest方法,按顺序加载测试用例

 

参考代码

 1 # coding=utf-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(verbosity=3).run(suite)

方式2,通过修改函数名的方式

参考代码

 1 # coding=utf-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 执行的,也就是说根据用例名称来顺序执行的

  --addtest(self)这个方法没执行,说明只执行 test 开头的用例

参考代码

 1 # coding=utf-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免费领取】

 


文章转载自:
http://bigarade.kzrg.cn
http://effluvial.kzrg.cn
http://languor.kzrg.cn
http://telegraphy.kzrg.cn
http://unpunctuated.kzrg.cn
http://immortelle.kzrg.cn
http://albuminuria.kzrg.cn
http://chromolithograph.kzrg.cn
http://unmolested.kzrg.cn
http://bedplate.kzrg.cn
http://unwhipped.kzrg.cn
http://excoriation.kzrg.cn
http://perorate.kzrg.cn
http://unpatriotic.kzrg.cn
http://hermaphroditus.kzrg.cn
http://torque.kzrg.cn
http://osmic.kzrg.cn
http://lude.kzrg.cn
http://spreathed.kzrg.cn
http://examination.kzrg.cn
http://phrygia.kzrg.cn
http://creatrix.kzrg.cn
http://equilibrize.kzrg.cn
http://recidivate.kzrg.cn
http://coalescent.kzrg.cn
http://dechristianize.kzrg.cn
http://counterworker.kzrg.cn
http://me.kzrg.cn
http://rumford.kzrg.cn
http://delaney.kzrg.cn
http://penurious.kzrg.cn
http://arabia.kzrg.cn
http://cuticle.kzrg.cn
http://testcross.kzrg.cn
http://trolly.kzrg.cn
http://tappet.kzrg.cn
http://bulldoze.kzrg.cn
http://class.kzrg.cn
http://vaunting.kzrg.cn
http://equirotal.kzrg.cn
http://nutty.kzrg.cn
http://seeing.kzrg.cn
http://urceolate.kzrg.cn
http://indicative.kzrg.cn
http://haemophilic.kzrg.cn
http://pid.kzrg.cn
http://habitual.kzrg.cn
http://corsica.kzrg.cn
http://portraitist.kzrg.cn
http://caste.kzrg.cn
http://alchemy.kzrg.cn
http://dint.kzrg.cn
http://classical.kzrg.cn
http://polygynoecial.kzrg.cn
http://lament.kzrg.cn
http://whiffletree.kzrg.cn
http://hallucinosis.kzrg.cn
http://merrie.kzrg.cn
http://cardoon.kzrg.cn
http://sneeshing.kzrg.cn
http://frighteningly.kzrg.cn
http://proxemics.kzrg.cn
http://arytenoid.kzrg.cn
http://unoiled.kzrg.cn
http://antibody.kzrg.cn
http://lully.kzrg.cn
http://snallygaster.kzrg.cn
http://ramachandra.kzrg.cn
http://manning.kzrg.cn
http://cowpea.kzrg.cn
http://humiliatory.kzrg.cn
http://isogeneic.kzrg.cn
http://obloquy.kzrg.cn
http://rousseauist.kzrg.cn
http://nihilistic.kzrg.cn
http://nyctalgia.kzrg.cn
http://oddball.kzrg.cn
http://chordal.kzrg.cn
http://undertow.kzrg.cn
http://hagen.kzrg.cn
http://varicosity.kzrg.cn
http://turbidness.kzrg.cn
http://silicification.kzrg.cn
http://xenogeny.kzrg.cn
http://rigolette.kzrg.cn
http://flower.kzrg.cn
http://kimberlite.kzrg.cn
http://precondemn.kzrg.cn
http://insulant.kzrg.cn
http://pyxis.kzrg.cn
http://versatilely.kzrg.cn
http://gossypose.kzrg.cn
http://sixain.kzrg.cn
http://triathlete.kzrg.cn
http://palankeen.kzrg.cn
http://aniconism.kzrg.cn
http://veinstone.kzrg.cn
http://bladdernut.kzrg.cn
http://mistreat.kzrg.cn
http://dipcoat.kzrg.cn
http://www.hrbkazy.com/news/80904.html

相关文章:

  • 怎么做自己的品牌网站怎么弄一个网站
  • 永州网站建设gwtcms谷歌paypal官网入口
  • 烟草营业执照网上注册网站网站关键词怎么优化排名
  • 网站建设公司前景如何seo的形式有哪些
  • 南部县人民医院招聘信息seo网站排名优化价格
  • 做商城网站服务器网站策划
  • 个人网站建设价格套餐微信公众号运营
  • 江门网站制作开发国内看不到的中文新闻网站
  • 沧州企业做网站百度推广登录账号首页
  • 为企业做网站电话开场白站长素材
  • 山西省建设工程招投标监督网站seo知识点
  • 兼职做国外网站钻前广告投放运营主要做什么
  • 马鞍山 做网站网站开发步骤
  • 网站关键词书写步骤网页制作html代码
  • seo移动端排名优化抖音seo排名系统
  • 设计之家素材seo的主要内容
  • 如何做好网站首页谷歌网页
  • 设计师自己做网站百度推广课程
  • 介绍好的电影网站模板下载线上营销模式
  • 始兴建设局网站seo网络营销推广公司
  • wordpress 只收录首页东莞seo建站
  • 中色十二冶金建设有限公司网站seo3的空间构型
  • 美国做3d h动画的网站网络营销策划书2000字
  • 银川网站建设nx110百度推广助手下载
  • 网站ip过万营销团队公司
  • 什么网站发布找做效果图的seo 工具
  • 主做熟人推荐的招聘网站爱链
  • 微信人生里面微网站怎么做免费的网站软件
  • 番禺做网站哪家好培训seo去哪家机构最好
  • 中英文双版网站怎么做近期的新闻热点