1、import unitest------套路1,必须导入!!
2、#创建测试类--------------------套路2,测试名自取,最好首字母大写,必须继承unitest下的Testcase类!!!
class 测试名(unitest.TestCase):
3、def setup(self):#--------------->钩子方法,所有用例执行前,都会执行这个方法,所以一般存放初始化内容,一般...
4、def test_01(self):#------------->第一条测试用例,注意!!方法名必须为test开头(如果存在某条用例名不是test开头,那么使用main()执行时,则不会运行到)
5、def teardown(self):#------------->执行完一条用例后,都会执行这个
#最后:------------------------->这是最简单的执行测试用例的方法
if __name__=='__main__':
unittest.main();#------->运行当前所有的测试用例(以test开头的)

二、但是每执行一条用例,都会setup(),teardown(),有多少用例,就执行多少次,很明显很浪费时间

因此!分别把setup(self)、teardown(self)方法改为类方法setupclass(cls)、teardownClass(cls),加上@classmethod修饰,如下面所示

 class Test_my_unit(unittest.TestCase):
@classmethod
3 def setUpClass(cls):
print('START') def test_01(self):
print('第一个测试用例'); def test_02(self):
print('第二个测试用例') def test_03(self):
print('第三个测试用例') def test_04(self):
print('第四个测试用例');
@classmethod
18 def tearDownClass(cls):
print('结束');

结果(满足要求):

3、用例执行顺序

根据ASCII码的顺序加载测试用例,数字与字母的顺序为:0-9---->A-Z------>a-z。所以以A开头的测试用例方法会优先执行,以a开头会后执行

那么~如果要指定用例执行顺序的话,就要将命名规范的意思咯

为什么只执行最后一个用例

6、使用testsuit指定测试集

7、通过discover来批量执行用例

    #第一个参数:开始查找的目录:os.getcwd(),说明从当前路径开始找
#第二个参数:匹配规则:匹配规则为【test*.py】,以名字中含有test的py文件都开始遍历
#第三个参数:测试模块的顶层目录,没有的话,默认为None
#使用discover()方法,切记测试用例中需要执行的测试方法必须以test开头,否则无法加载!!!
discovers=unittest.defaultTestLoader.discover(os.getcwd(),pattern='test*.py',top_level_dir=None);
suit.addTest(discovers); #unittest.main(suit);
#suit = unittest.TestLoader().loadTestsFromTestCase(Testlianxi2); runner=HTMLTestRunner.HTMLTestRunner(
stream=re_open,
title=u'测试标题',
description=u'测试描述' )
runner.run(suit);

疑问

1 如果当前只有一个test类,执行unittest.main();时,就执行test下的所有test开头的用例,若一个py文件中,含有多个test类,执行unittest.main();时,则按顺序依次执行两个test类下的所有testcase

2、如果用例名称不规范时(或者只需要运行指定的用例时),则需要使用suit来指定运行

8、跳过用例(python3.1以后支持)

①、想要无条件跳过用例,只需要在该用例的方法上安上装饰器

@unittest.skip('跳过没商量')
def haha_02(self):
#第一条测试用例,检查对象的字段是否正确
self.assertEqual('this is test_string',self.test_string);

②、判断条件,如果条件为真,那么执行,否则则跳过用例

    @unittest.skipIf(False,'有条件')--------->执行
def haha_02(self):
#第一条测试用例,检查对象的字段是否正确
self.assertEqual('this is test_string',self.test_string); @unittest.skipIf(True,'有条件')---------->不执行
def haha_02(self):
#第一条测试用例,检查对象的字段是否正确
self.assertEqual('this is test_string',self.test_string);

例子如下

lass DemoTest(unittest.TestCase):
status = 200
def setUp(self):
self.url = 'http://www.cnblogs.com/imyalost/' @unittest.skip(u"无条件跳过该测试")
def test_blog1(self):
# 无条件跳过
r1 = requests.get(self.url) @unittest.skipIf(status > 200, u"状态码大于200,就跳过该测试")
def test_blog2(self):
# 如果断言结果为真,则继续执行,否则跳过测试
r2 = requests.get(self.url)
status2 = r2.status_code
self.assertTrue(status2 > self.status) @unittest.skipUnless(status == 404, u"状态码为200,则跳过")
def test_blog3(self):
# 除非结果为真,否则跳过该测试
r3 = requests.get(self.url)
status3 = r3.status_code
self.assertTrue(status3 > self.status) @unittest.expectedFailure
def test_blog4(self):
# 将测试用例标记为“预期失败”,如果测试执行时失败,则测试结果不计为失败
r4 = requests.get(self.url+'/test4')
status4 = r4.status_code
self.assertTrue(status4 ==self.status) def tearDown(self):
pass if __name__ == '__main__':
unittest.main()

unitest框架--认识与基本使用的更多相关文章

  1. 初识unitest框架

    1.借助IED录制脚本 2.导出脚本,选择用Python语言 将脚本导出,保存为 baidu.py ,通过 python IDLE 编辑器打开 引入unittest框架解释,见代码的的注释 # -*- ...

  2. 【Python】单元测试框架unitest及其高级应用

    Unittest Unittest是python的一个单元测试框架,但是它不仅适用于单元测试,还适用自动化测试用例的开发与执行.我们可以很方便的使用它组织执行测试用例,使用它提供的丰富的断言方法进行测 ...

  3. 单元测试框架unitest和自动化测试高级应用

    单元测试框架:为了让单元测试代码更容易维护和编写,遵循一定的规范来编写测试用例. 创建被测类calculator.py   #计算器 class count: def _init_(self,a,b) ...

  4. python3+request接口自动化框架

    首次书写博客,记录下写的自动化接口框架,框架比较简单,哈哈哈,算是记录下历程把!~~~ 一.本次框架由python3.6 书写 1.准备代码环境,下载python3.6    下载地址:https:/ ...

  5. python:单元测试框架pytest的一个简单例子

    之前一般做自动化测试用的是unitest框架,发现pytest同样不错,写一个例子感受一下 test_sample.py import cx_Oracle import config from sen ...

  6. Selenium3+python自动化010-UnitTest框架简介和单元测试框架使用

    一.UnitTest介绍 unittest单元测试框架不仅可以适用于单元测试,还可以适用WEB自动化测试用例的开发与执行,该测试框架可组织执行测试用例,并且提供了丰富的断言方法,判断测试用例是否通过, ...

  7. pycharm 右键无法显示unittest框架&&解决右键只有unittest 运行如何取消右键显示进行普通run

    上面是普通文件和unittest 导入的文件右键快捷键显示情况,可以看出两者快捷键都是ctr+shift+F10,如果你是右键模式想运行unitest,但是又不知道哪里配置unittest直接运行快捷 ...

  8. 多测师讲解ui自动化框架设计思想_高级讲师肖sir

    UI自动化框架:UI自动化框架可以分为8个模块,conf.data.public.pageobject.testcase.runner.report.log.conf是用来储存系统环境.数据库.邮件的 ...

  9. unittest测试框架

    unittest单元测试框架不仅可以适用于单元测试,还可以适用WEB自动化测试用例的开发与执行,该测试框架可组织执行测试用例,并且提供了丰富的断言方法,判断测试用例是否通过,最终生成测试结果. 一.u ...

随机推荐

  1. 牛客网 python 求解立方根

    •计算一个数字的立方根,不使用库函数 详细描述: •接口说明 原型: public static double getCubeRoot(double input) 输入:double 待求解参数 返回 ...

  2. 大数据python词频统计之本地分发-file

    统计某几个词在文章出现的次数 -file参数分发,是从客户端分发到各个执行mapreduce端的机器上 1.找一篇文章The_Man_of_Property.txt如下: He was proud o ...

  3. gulp.基础

    1.安装 全局安装 npm install --global gulp 作为项目的开发依赖安装 npm install gulp --save-dev 2.在根目录下创建一个名为gulpfile.js ...

  4. 解决在编程方式下无法访问Spark Master问题

    我们可以选择使用spark-shell,spark-submit或者编写代码的方式运行Spark.在产品环境下,利用spark-submit将jar提交到spark,是较为常见的做法.但是在开发期间, ...

  5. 深入分析Zookeeper的实现原理

    zookeeper 的由来 分布式系统的很多难题,都是由于缺少协调机制造成的.在分布式协调这块做得比较好的,有 Google 的 Chubby 以及 Apache 的 Zookeeper.Google ...

  6. 三维拓扑排序好题hdu3231

    /* 三维拓扑排序 将每个长方体分解成六个面,xyz三维进行操作 每一维上的的所有长方体的面都应该服从拓扑关系,即能够完成拓扑排序=如果两个长方体的关系时相交,那么其对应的三对面只要交叉即可 如 a1 ...

  7. Mysql 查看连接数,状态 最大并发数

    show status like '%max_connections%'; ##mysql最大连接数set global max_connections=1000 ##重新设置show variabl ...

  8. 阿里云服务器 http 转 https

    转载: http://blog.csdn.net/zzp961224/article/details/78934310 做个笔记 以备遗忘. 环境: 阿里云云服务器    Windows Server ...

  9. K8s-Pod控制器

      在K8s-Pod文档中我们创建的Pod是非托管的Pod,因为Pod被设计为用后就弃的对象,如果Pod正常关闭,K8s会将该Pod清除,它没有自愈的能力.Pod控制器是用来保持Pod状态的一种对象资 ...

  10. 专注笔试算法20年(C语言版)

    1.C语言实现链表数据的反转({1,2,3,4}->{4,3,2,1}). int trav(PNode *head){ PNode p_1,p_2,tmp; //判断参数是否有效 if(*he ...