一:避坑点

1、使用unittest时,默认不会执行if __name__ == '__main__':,而是以“Run 'Unittests in XXX' ”方式运行。

我们需要通过menu:Run->Edit Configurations打开配置窗口,在Python下,新建一个运行方式case_python(名字自取),将运行的脚本加入,保存后,以此方式运行测试脚本,就能进入方法if __name__ == '__main__':。

script path填入脚本的路径。Working directory填入项目的根目录。

2、进入方法if __name__ == '__main__':,我们可以添加自定义的测试顺序,或者将测试结果输出到外部文件或html文件中。

二:自定义测试case执行顺序

1、if __name__ == '__main__':中,可以通过TestSuite定义case执行顺序

suite = unittest.TestSuite()
suite.addTest(TestCreateTask("test_02"))
suite.addTest(TestCreateTask("test_01"))

2、定义TestCase时,可以通过case的名称来定义执行顺序

如:def test_01(self)、def test_02(self)

能通过名称来确定执行顺序的原因是:unittest源码getTestCaseNames对测试用例的名称进行了排序,默认是根据ASCII码的顺序加载测试用例,数字与字母的顺序为:0-9,A-Z,a-z。

三:将测试结果输出到外部文件

if __name__ == '__main__':# 安装顺序执行casesuite = unittest.TestSuite()suite.addTest(TestCreateTask("test_02"))suite.addTest(TestCreateTask("test_01"))# 执行结果输出到外部文件with open("unit_test_result.txt", "w") as f:# verbosity = 2 查看完成的执行情况# verbosity默认为1,可以设置为0和2。# 0 (静默模式): 你只能获得总的测试用例数和总的结果。# 1 (默认模式): 非常类似静默模式 只是在每个成功的用例前面有个“.” 每个失败的用例前面有个 “E”# 2 (详细模式):测试结果会显示每个测试用例的所有相关的信息 并且 你在命令行里加入不同的参数可以起到一样的效果runner = unittest.TextTestRunner(stream=f, verbosity=2)runner.run(suite)

四:将测试结果生成Html文件

import unittest

from test_unit import TestCreateTask

from HTMLTestRunner import HTMLTestRunner

if __name__ == '__main__':

suite = unittest.TestSuite() suite.addTest(TestCreateTask("test_02")) suite.addTest(TestCreateTask("test_01"))

with open('HTMLReport.html', 'w') as f:
        runner = HTMLTestRunner(stream=f,
                                title='TestCreateTaskTest Report',
                                description='generated by HTMLTestRunner.',
                                verbosity=2
                                )
        runner.run(suite)

五:完整的unittest case使用实例

1、一个class继承了unittest.TestCase,便是一个测试用例,但如果其中有多个以 test 开头的方法,那么每有一个这样的方法,在load的时候便会生成一个TestCase实例。

import unittestclass TestCreateTask(unittest.TestCase):# 测试前准备,该方法一个测试用例,只执行一次@classmethoddef setUpClass(cls):print('******** Test Start ********')# 用来清理环境,已备之后的测试,该方法一个测试用例,只执行一次@classmethoddef tearDownClass(cls):print('******** Test End ********\n')# 测试前准备,测试实例的每个测试case执行一次def setUp(self):set_test_data()# 用来清理环境,已备之后的测试,测试实例的每个case执行一次def tearDown(self):pass# case2def test_02(self):self.assertEqual(24,2)    # case1def test_01(self):self.assertEqual(24,3)

if __name__ == '__main__':
    # 安装顺序执行case suite = unittest.TestSuite() suite.addTest(TestCreateTask("test_02")) suite.addTest(TestCreateTask("test_01")) # 执行结果输出到外部文件 with open("unit_test_result.txt", "w") as f: # verbosity = 2 查看完成的执行情况
  # verbosity默认为1,可以设置为0和2。
  # 0 (静默模式): 你只能获得总的测试用例数和总的结果。
        # 1 (默认模式): 非常类似静默模式 只是在每个成功的用例前面有个“.” 每个失败的用例前面有个 “E”
  # 2 (详细模式):测试结果会显示每个测试用例的所有相关的信息 并且 你在命令行里加入不同的参数可以起到一样的效果
runner = unittest.TextTestRunner(stream=f, verbosity=2)

runner.run(suite)

六:unittest核心工作原理

unittest中最核心的四个概念是:test case, test suite, test runner, test fixture

一个TestCase的实例就是一个测试用例。什么是测试用例呢?就是一个完整的测试流程,包括测试前准备环境的搭建(setUp),执行测试代码(run),以及测试后环境的还原(tearDown)。元测试(unit test)的本质也就在这里,一个测试用例是一个完整的测试单元,通过运行这个测试单元,可以对某一个问题进行验证。

而多个测试用例集合在一起,就是TestSuite,而且TestSuite也可以嵌套TestSuite。

TestLoader是用来加载TestCase到TestSuite中的,其中有几个loadTestsFrom__()方法,就是从各个地方寻找TestCase,创建它们的实例,然后add到TestSuite中,再返回一个TestSuite实例。

TextTestRunner是来执行测试用例的,其中的run(test)会执行TestSuite/TestCase中的run(result)方法。
测试的结果会保存到TextTestResult实例中,包括运行了多少测试用例,成功了多少,失败了多少等信息。

而对一个测试用例环境的搭建和销毁,是一个fixture。
————————————————
版权声明:本文为CSDN博主「huilan_same」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/huilan_same/article/details/52944782

七:unittest的skip装饰器

skip装饰器一共有三个 unittest.skip(reason)、unittest.skipIf(condition, reason)、unittest.skipUnless(condition, reason),skip无条件跳过,skipIf当condition为True时跳过,skipUnless当condition为False时跳过。

@unittest.skip("I don't want to run this case.")

def test_divide(self):

"""Test method divide(a, b)"""

print "divide"
————————————————
版权声明:本文为CSDN博主「huilan_same」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/huilan_same/article/details/52944782

八:断言Assert----结果对比的函数

Method

Checks that

New In

assertEqual(a,b):相等

a == b

assertNotEqual(a,b)

a != b

assertTrue(x)

bool(x) is True

assertFalse(x)

bool(x) is False

assertIs(a,b)

a is b:判断是否是同一对象(id(a))

3.1

asserNottIs(a,b)

a is not b

3.1

assertIsNone(x)

x is None

3.1

assertIsNotNone(x)

x is not None

3.1

assertIn(a,b):a是否在b中

a in b

3.1

assertNotIn(a,b)

a not in b

3.1

assertIsInstance(a,b):实例对象

isInstance(a,b)

3.2

assertNotIsInstance(a,b)

not isInstance(a,b)

3.2

Python unittest使用相关推荐

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

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

  2. pythonunittest接口测试_基于python+unittest +requests接口测试

    2019独角兽企业重金招聘Python工程师标准>>> 谈到接口测试,大家都不会感到陌生.接口测试的工具和实现方式也有很多,比如ant+jmeter+jemkins.postman. ...

  3. python appium自动化测试框架unittest_Appium基于Python unittest自动化测试 自动化测试框架 -- PO并生成html测试报告...

    基于python单元测试框架unittest完成appium自动化测试,生成基于html可视化测试报告 代码示例: #利用unittest并生成测试报告 class Appium_test(unitt ...

  4. python unittest断言_python unittest之断言及示例

    assert.png 前言 python unintest单元测试框架提供了一整套内置的断言方法. 如果断言失败,则抛出一个AssertionError,并标识该测试为失败状态 如果异常,则当做错误来 ...

  5. Selenium UI自动化测试(四)Python+Unittest+HTMLTestRunner测试报告—百度hao123实例

    Python+Unittest+HTMLTestRunner测试报告-百度个人中心实例 环境配置:https://blog.csdn.net/sevensolo/article/details/100 ...

  6. Python unittest –单元测试示例

    Today we will learn about python unittest and look through python unit test example programs. In pre ...

  7. Python+unittest+requests 接口自动化测试框架搭建 完整的框架搭建过程 实战

    一.Python+unittest+requests+HTMLTestRunner 完整的接口自动化测试框架搭建_00--框架结构简解 首先配置好开发环境,下载安装Python并下载安装pycharm ...

  8. python unittest执行程序在pycharm可以成功运行但使用cmd会报错:E列表 test_register (unittest.loader._FailedTest)

    python unittest执行程序在pycharm可以成功运行但使用cmd会报错 如题,在pycharm中执行主程序运行成功: 用例執行.debug日志均沒問題 在cmd执行主程序报错: 最惡心的 ...

  9. python+Unittest+ddt 自动化测试

    此为系列博客 Python测试 Coverage代码覆盖率 python+Unittest+ddt 自动化测试 (当前位置) UnitTest+HTMLTestRunner 测试可视化 文章目录 安装 ...

  10. 简单实现接口自动化测试(基于python+unittest)

    简单实现接口自动化测试(基于python+unittest) 简介 本文通过从Postman获取基本的接口测试Code简单的接口测试入手,一步步调整优化接口调用,以及增加基本的结果判断,讲解Pytho ...

最新文章

  1. python读取dat数据anaconda_基于python的大数据分析-pandas数据读取(代码实战)
  2. metasploit 漏洞评级翻译
  3. 在MATLAB中读取同一路径下多个txt或mat文件
  4. 51. N-Queens
  5. transfer = C only read dynamically - why it fails to work
  6. MYSQL 数据库怎样快速的复制表以及表中的数据
  7. Kafka的存储设计
  8. 特朗普社交应用登苹果App Store下载量榜首
  9. TCP三次挥手四次握手
  10. cisco配置交换机管理地址和默认网关
  11. 【R可视化】你家乡的肯德基都在哪儿?
  12. android 游戏 柄,Android手柄游戏中心-葡萄游戏厅
  13. bandicam安装注册
  14. 人工客服——图灵机器人教程
  15. 语义角色标注 Semantic Role Labeling(SRL) 初探(整理英文tutorial)
  16. 京东茅台抢购方法,与黄牛站在同一起跑线
  17. android gravity 属性解析
  18. 为啥需要RPC,而不是简单的HTTP?
  19. 基于微信维修报修物业小程序系统设计与实现 开题报告
  20. 微服务架构的好处和弊端

热门文章

  1. 重入锁ReentrantLock详解
  2. hockeyapp 自动收集crash
  3. 计算两点间的距离,入两点坐标(X1,Y1),(X2,Y2),计算并输出两点间的距离。
  4. Python音频转成numpy数组:numpy.frombuffer报错ValueError: buffer size must be a multiple of element size
  5. 拜伦之女传奇一生:世界第一位计算机程序员
  6. 9-2 什么是零点漂移 产生零点漂移的主要原因是什么 差动放大电路为什么能抑制零点漂移
  7. 百度地图定位和IP地址定位
  8. 信息熵、gini、信息增益
  9. 利用火狐浏览器的编辑和重发功能修改网站POST请求
  10. 【连续介质力学】弹性与超弹性、粘弹性、弹塑性、柯西弹性