一、单元测试框架说明

单元测试是指在编程中,针对程序模块的最小单元(类中的方法)进行正确性检验的测试工作。python+selenium自动化测试中通常使用unittest或者pytest作为单元测试框架。而java+selenium自动化测试中通常使用junit或者testng作为单元测试框架。

二、unittest框架的4个重要概念。

(1) test fixture(测试固件):一个测试固件代表一个或多个测试执行前的准备工作和测试结束后的清理工作,例如:创建数据库连接、关闭数据库连接、启动服务进程、测试环境的清理等。

(2) test suite(测试套件):一个测试套件是一组测试用例的集合(也可以是一组测试套件的集合)。它的作用是将测试用例集合到一起一次性执行集合中所有的测试用例。

(3) test case(测试用例):一个测试用例是一个完整的测试流程,是最小的测试单元,通常会继承unittest.TestCase类。

(4) test runner(测试运行器):一个测试运行器执行设定的测试用例并将测试结果反馈给用户两部分功能组成。

三、unittest框架中的特殊方法以及特殊方法执行顺序。

(1)自动化中要求所有的测试用例都继承unittest.TestCase基类。TestCase基类中定义的几个特殊的方法如下:

setUp() 每个测试用例运行前执行,主要作用是测用例前的初始化工作。

tearDown() 每个测试用例运行后执行,主要作用是测试用例后的清理工作。

setUpClass() 所有测试用例运行前运行,必须使用@classmethod装饰器装饰,在setUp()方法前执行,整个测试过程只执行一次,主要作用是单元测试前的准备工作。

tearDownClass() 所有测试用例运行后运行,必须使用@classmethod装饰器装饰,在tearDown()方法后执行,整个测试过程只执行一次,主要作用是单元测试后的清理工作。

(2) 执行顺序如下:

setUpClass()
#测试用例一
setUp()
test_01()
tearDown()
#测试用例二
setUp()
test_02()
tearDown()
tearDownClass()

四、测试用例的命名。

最简单的测试用例方法命令只需要覆盖runTest()方法即可。而更可取的是测试用例以"test"开头命名。

五、unittest加载并执行测试用例方法

在unittest单元测试框架中,提供两种单元测试加载执行测试用例的方法:

(1)直接通过unittest.main()方法加载并执行当前py文件中的测试用例。这是一种最简单的加载方法,所有的测试方法执行顺序都是按照方法名字符串所表示的ASCII码升序排序(数字与字母的顺序为:0-9,A-Z,a-z)。如:

(2)将所有的测试用例添加到测试套件集合中,然后一次性加载所有的测试对象。此方法经测试执行顺序是按照测试用例的加载顺序执行,但是特别要注意执行方式。如果是点击右键的方式运行那么总是以unittest方式执行(这种方式执行是以ASCII升序执行),而想要从main方法执行,则需要在pycharm的右上角修改Pycharm的运行方法。并按运行按钮从main方法运行。(这种方式执行是按照测试用例加载顺序执行)

测试用例添加到测试套件的方式:

注意:以上两种方式都可以执行测试套件。

#其中:TestManage是类名,test_add是用例名,verbosity参数说明如下:

#verbosity参数可以控制输出的错误报告的详细程度,只有3个取值:

#<=0(quiet): 只显示执行的用例的总数和全局的执行结果。输出结果中不提示执行成功的用例数。

#1(default): 默认值,显示执行的用例的总数和全局的执行结果,并对每个用例的执行结果(成功T或失败F)有个标注。

#>=2(verbose): 显示执行的用例的总数和全局的执行结果,并输出每个用例的详细的执行结果。

执行后测试结果说明:

.:一个点表示一个测试用例执行成功。

F:一个F表示一个测试用例执行失败。

E:一个E表示测试用例中本身有异常。

六、按照特定顺序执行测试用例

通过把测试用例按顺序加载到测试套件中执行。

通过修改函数名的方式来让测试用例按特定顺序执行。如:

def test1_add(self):

def test2_delete(self):

def test3_update(self):

def test4_select(self):

注意:从后期自动化项目批量执行多个py文件的所有测试用例的角度出发第一种方式太过于繁琐,建议使用第二种方式。

七、忽略测试用例。

在批量执行测试用例时,有时会遇到某些测试用例不需要执行,但是又想保留测试代码。除了可以注释掉代码外还可以使用unittest框架提供的更简便的注解方法来忽略那些暂时不需要执行的测试用例。忽略测试用例分为无条件忽略和有条件忽略。

另外还有一个:@expected failure #代表如果test失败了不计入失败的case数目

八、unittest单元测试框架中常见的断言。

assertEqual(a, b) a == b 最常用

assertNotEqual(a,b) a != b

assertTrue(x) x is True 最常用

assertFalse(x) x is False

assertIs(a, b) a is b

assertIsNot(a, b) a is not b

assertIsNone(x) x is None

assertIsNotNone(x) x is not None

assertIn(a, b) a in b 最常用

assertNotIn(a, b) a not in b

assertIsInstance(a,b) isinstance(a, b)

assertNotIsInstance(a,b) not isinstance(a, b)

assertGreater(a,b) a > b

assertGreaterEqual(a,b) a >= b

assertLess(a, b) a < b

assertLessEqual(a,b) a <= b

其中assertEqual(a,b),asserTrue(),assertIn为常用断言方法。

assertEqual(a,b)用于判断两个字符串是否相等。

assertTrue(x)用于断言一个字符串是否在页面资源。

assertIn(a,b)用于判断一个jsp或php页面在当前页面地址中。

九、总结

如果你觉得此文对你有帮助,如果你对此文有任何疑问,如果你对软件测试、接口测试、自动化测试、面试经验交流感兴趣可以关注组作者持续输出优质内容

面试资料

我们学习软件测试必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

上面是我整理的配套资源,这些资源对于软件测试的的朋友来说应该是最全面最完整的备战仓库,为了更好地整理每个模块,我也参考了很多网上的优质博文和项目,力求不漏掉每一个知识点,很多朋友靠着这些内容进行复习,拿到了BATJ等大厂的offer,这个仓库也已经帮助了很多的软件测试的学习者,希望也能帮助到你。

华为5年自动化测试工程详细解说:unittest单元测试框架相关推荐

  1. 华为五年自动化测试工程详细解说:unittest单元测试框架

    一.单元测试框架说明 ​单元测试是指在编程中,针对程序模块的最小单元(类中的方法)进行正确性检验的测试工作.python+selenium自动化测试中通常使用unittest或者pytest作为单元测 ...

  2. 华为python自动化测试框架_华为五年自动化测试工程详细解说:unittest单元测试框架...

    一.单元测试框架说明 单元测试是指在编程中,针对程序模块的最小单元(类中的方法)进行正确性检验的测试工作.python+selenium自动化测试中通常使用unittest或者pytest作为单元测试 ...

  3. python自动化测试-【自动化测试】Python - unittest单元测试框架

    一.测试模型 下面这部分来自于某书籍资料,拿过来,按需参考一下: 测试模型 (1)线性测试 1.概念: 通过录制或编写对应应用程序的操作步骤产生的线性脚本.单纯的来模拟用户完整的操作场景.(操作,重复 ...

  4. 阿里五年自动化测试工程详细解说:unittest单元测试框架

    目录:导读 一.单元测试框架说明 二.unittest框架的4个重要概念. 三.unittest框架中的特殊方法以及特殊方法执行顺序. 四.测试用例的命名. 五.unittest加载并执行测试用例方法 ...

  5. python测试框架untest怎么循环执行_Python自动化测试-Unittest单元测试框架详解

    python中unittest模块是用来做单元测试的. unittest是一个python版本的junit,junit是java中的单元测试框架,对java的单元测试,有一句话很贴切:Keep the ...

  6. python自动化测试框架有哪几种_Python自动化测试-Unittest单元测试框架详解

    python中unittest模块是用来做单元测试的. unittest是一个python版本的junit,junit是java中的单元测试框架,对java的单元测试,有一句话很贴切:Keep the ...

  7. python装饰器执行顺序_python unittest单元测试框架-3用例执行顺序、多级目录、装饰器、fixtures...

    1.用例执行顺序 unittest默认会按照ascii码的顺序,依次执行.类名--方法名排序,使用discover也是默认排序.如果不想使用默认排序,就使用testsuite测试集的方式. impor ...

  8. Selenium+Python ---- 免登录、等待、unittest单元测试框架、PO模型

    1.免登录在进行测试的过程中难免会遇到登录的情况,给测试工作添加了工作量,本文仅提供一些思路供参考解决方式:手动请求中添加cookies.火狐的profile文件记录信息实现.人工介入.万能验证码.去 ...

  9. python单元测试框架-Python unittest单元测试框架总结

    什么是单元测试 单元测试是用来对一个模块.一个函数或者一个类来进行正确性检验的测试工作. 比如对于函数abs(),我们可以编写的测试用例为: (1)输入正数,比如1.1.2.0.99,期待返回值与输入 ...

最新文章

  1. Vue 组件库 heyui@1.18.0 发布,新增地址选择、图片预览组件
  2. Stuts2的struts.devMode设置成true后,不起作用,仍需要重启tomcat
  3. 贯穿产品运营过程的三个用户思维
  4. (转)光照图的理论和实践
  5. python怎么读数据库_Python如何读写SQLite数据库
  6. 从《牛津高阶英汉词典》中提取单词(1)
  7. matlab drtoolbox 使用,MATLAB数据降维工具箱drtoolbox介绍
  8. DOTween和iTween比较
  9. 前端图片上传并且裁切
  10. 大事•Pandownload凉了
  11. Linux git环境搭建和常用指令--推送至Github为例
  12. C语音static、const、voilate和位运算
  13. 实现微信通知提醒的方法总结
  14. 微信小程序日期午别排班表
  15. UVA1626 / ZOJ1463 Brackets sequence 区间DP
  16. chrome浏览器必备5款插件--各个都好使--chrome基础
  17. 微软云虚拟机外网访问
  18. 某赛一道misc_gif隐写_rar密码暴力破解_AAencode
  19. 从键盘输入一个年份,判断这一年是不是闰年
  20. RPA-机器人流程自动化

热门文章

  1. metaball公式_parametric.是什么意思
  2. E1视音频编解码器应用方案详细说明
  3. 2000-2009十年十大创业新模式
  4. class 5 搭建个人 Leanote 云笔记本
  5. Oracle数据库的空间管理技巧
  6. C语言实现一个走迷宫小游戏(深度优先算法)
  7. 弘扬文明之风,彰显正能量!中山公园职工平凡岗位上的不凡坚守!
  8. dncnn图像去噪_深立井井壁图像的卷积神经网络去噪方法
  9. ArcGIS加载天地图底图
  10. cesium加载BIM模型