unittes框架基本介绍

unittes框架
unittest单元测试框架不仅可以适用于单元测试,还可以适用WEB自动化测试用例的开发与执行。web自动化测试存在哪些问题呢?

一、之前脚本存在的问题

1、在测试用例执行的时候,发现挺麻烦(如果测试用例熟练过大,要么换个执行,要么导包执行)

2、断言方式太low,只能是在控制台打印测试用例是否通过,我们希望这个断言状态是显示在报告中的,而且不应该通过if-else去判断

3、基本上看不到测试报告的效果,显示总共执行了多少条用例,通过了多少条,失败了多少条,失败原因是什么

web自动化:python+selenium+unittest

unittest:单元测试框架,有很多好的特性,在自动化测试中是可以借鉴的

单元测试:包括两部分,代码级别的功能验证、逻辑覆盖

单元测试框架的好处:

  • 提供用例组织与执行

  • 提供丰富的断言方法

  • 提供丰富的日志和报告(html格式的更好一些)

unittest单元测试框架的工作原理:

在这里插入图片描述

步骤:

1、导包,unittest是自带的框架,不需要安装

2、创建一个单元测试类(其实就是类,只不过它继承了单元测试框架单元测试用例的类)

3、先来讲单元测试类中的五个特殊的方法使用,包括使用场景及执行顺序

​ setUp()、test_xxx()、tearDown(),不管你怎么调整,执行顺序不变

​ setUp():主要是进行测试用例的资源初始化,测试用例的前提条件写在这

​ test_xxx():测试用例,要把测试用例的步骤写在这个方法中

​ tearDown():主要是进行测试用例的资源释放的

​ @classmethod:注解的方法是类方法,不用创建对象也能用的方法,在对象进内存之前就已经存在的方法, 随着类一起进的内存

​ setUpClass:给当前单元测试类的所有用例进行初始化

​ tearDownClass:给当前单元测试类的所有用例进行资源释放

setUpClass和setUp()的区别:

​ setup()实例方法,就需要创建对象在调用,setUpClass类方法,不需要对象也可以调用

​ setUp()在每一个测试用例执行之前运行一次,setupclass方法在测试执行之前只执行一次

​ setUp() 是对每一条测试用例的初始化,setupclass()给当前单元测试类的所有用例进行初始化的

4、创建测试用例:test开头的方法

5、测试用例执行:

main():

​ 是把所有的测试用例执行了一遍

​ 执行测试用例的顺序控制不了(按照测试用例名(方法名)的字母顺序执行的)

		如何解决上面的这个不太好的特点,使用测试集合的概念,testsuite

​ 分类,我要把加法的测试用例加到一个测试集合testsuite中,只运行该测试集合即可

​ testsuite:

​ 1、创建testsuite的对象

​ 2、调用testsuite中的方法addtest、addtests()将测试用例加入测试集合

​ 3、testsuite的run()方法运行测试集合

​ 注意:run方法的参数是testresult的对象:re=unittest.TestResult()

​ testresult中存储的是测试执行的结果

​ print(re. dict

TestLoader:

1、创建TestLoader对象:loader=unittest.TestLoader()

2、使用loader的方法loadtestsfromName()将指定的测试用例加载到测试集合

​ loadertestsfromName()的参数比较灵活(理解、会用即可)

		1、可以是模块名:unitMymath

​ 2、可以是模块中的类名:unitMymath.unitMymath

​ 3、可以是模块中类中的某一个用例:unitMymath.unitMymath.test_add_1

3、使用loader的discover方法,将指定的文件(模块)中的测试用例一次性加载

discover()方法:suitt=unittest.defaultTestLoader.discover(r"./文件名/“,pattern=)

path:指定存放测试用例的目录即可(单元测试用例,使用unittest框架写的测试用例)

pattern:指定匹配规则,very*

unittest单元测试框架的工作原理:

TestCase:

一个TestCase的实例就是一个测试用例。什么是测试用例呢?就是一个完整的测试流程,包括测试前准备环境的搭建(setup),执行测试代码(test),以及测试后环境的还原(tearDown)

TestSuite:

多个测试用例集合在一起,就是TestSuite

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

TestRunner:

​ 在前面测试用例,测试集合执行的时候都是用testsuite()的run()方法:suitt.run(result)

TextTestRunner()—>将结果能够以text文本形式展示的

使用TextTestRunner()运行器提供的run()方法运行测试集合

如何产生一个文件流对象,如果打开一个文本文件,想着往里写入数据

报告是以TextTestResult的形式展示的

TextTestRunner()是TestRunner()的子类

断言:一个自动化测试用例,测试步骤,测试的断言缺一不可

unittest中提供的断言方法有:

​ assertEqual(a,b,msg=” “):就是测试a和b是否相等,如果相等,则断言成功,不相等,则断言失败

​ assertNotEqual(a,b,msg=” “):就是测试a和b是否不相等

​ assertTrue(a):判断a是否为真

​ assertFalse(a):判断a是否为假

​ assertIs(a,b):判断身份是否相等,其实就是判断其内存地址是否相等
assertNotIs(a,b):断言a是否是b,不是则测试用例通过。

​ assertIsNone(x)断言x是否None,是None则测试用例通过。

​ assertIsNotNone(x):断言x是否None,不是None则测试用例通过。

​ assertIn(a,b):断言a是否在b中,在b中则测试用例通过。

​ assertNotIn(a,b):断言a是否在b中,不在b中则测试用例通过。

​ assertIsInstance(a,b):断言a是是b的一个实例,是则测试用例通过。

​ assertNotIsInstance(a,b):断言a是是b的一个实例,不是则测试用例通过。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值