Python之unittest框架的使用包含测试套件,第三方测试报告
Python之unittest框架的使用(包含:测试套件,第三方测试报告)
文章目录
**
nittest框架**
**
测试套件**
三、补充知识点(了解)
四、在测试用例里添加用例描述(在报告里面展示)
前言
分步骤记录unittest框架的基本用法,测试套件的用法。
一、unittest框架
1、使用unittest框架,首先要建立一个测试类,然后这个类要继承unittest模块中的TestCase
2、在这个TestLogin类中,需要写用例,也就是写函数,一个函数代表一条用例。(注意:测试用例,用test开头)
(1)以一个函数举例
3、在以test开头的测试用例(函数)里面,主要写逻辑,以及断言
(1)在这里面。会有断言前的结果和断言后的结果。
断言前的结果,我们必须想办法的去获取。断言后的结果一般我们自己写的。那么断言前的结果,在以后的实际测试中,会遇到后端返回很多数据,我们最需要做的就是在这么多的结果中,怎么去拿到我们想要的数据(结果)。
4、一般写好了测试用例,接着会运行一下有没有问题
(1)直接点击函数左侧的运行符号进行运行
(2) 入口函数进行运行
5、断言(对实际的结果和预期的结果进行断言)
在这里断言一般有两种方式:
第一种使用Python自己的断言方式(基本是不用)
1、使用python中的关键字assert来断言(不推荐)
assert excepted == result # 如果条件不相等:抛出断言异常
第二种使用unittest里面的断言方式(常用)
二、测试套件
步骤1:创建一个测试套件
suite = unittest.TestSuite()
解释:在这里TestSuite()就是一个测试套件,通俗一点就是来装用例的一个容器
步骤2:加载测试用例
解释:这个步骤相当于,我先要找到测试用例,再装到容器里面去(注意:这里是有两个步骤,先发现用例,再收集(也就是加载))
通过路径进行加载(加载器,unittest.TestLoader)
(1)先创建一个测试加载器
load = unittest.TestLoader()
解释:load是TestLoader这个类的实例化对象,使用这个加载器里面的函数,这个函数是专门用来发现测试用例的
(2)发现(找到)测试用例
load.discover(测试用例所在的路径)
例如:# load.discover(r’C:\project\py47\code_demo\testcases')
注意:这个路径的尾部截止是一个py文件夹,而不是py文件。也就是我们要拿到py文件的上一级,如果拿到了py文件,那么系统就会报一些错误。
步骤3:把测试用例装到测试套件里面
注意:在这里要使用步骤1里面的创建好的测试套件,以及步骤2中的发现用例
suite.addTest(load.discover(r’C:\project\py47\code_demo\testcases’))
步骤4:创建一个测试执行器
runner = unittest.TextTestRunner()
解释:TextTestRunner是一个类,runner是这个类的对象
步骤5:执行测试用例
注意:这里执行用例是这个套件里面所有的测试用例
runner.run(suite) #对象调用了TextTestRunner类中的函数
步骤6:加入测试报告
注意:这里需要导入关于测试报告的模块(一般使用第三方写的)
例如:
使用第三方包BeautifulReport
需要先安装:pip install BeautifulReport
**from BeautifulReport import BeautifulReport
runner=BeautifulReport(suite)
runner.report(description=‘测试报告’)**
解释:BeautifulReport 是一个类,runner是这个类的实例化对象。report()是这个类里面的函数
总结:步骤1到步骤6的关系:
三、补充知识点(了解):
1、关于测试报告的生成
使用unittest框架里面自带的报告unitetstreport
从unittestreport模块导入TestRunner这个类
from unittestreport import TestRunner
1、创建一个测试执行器
runner = TestRunner(suite, templates=2)
2、执行测试套件中的所有用例
runner.run()
解释:templates是选择这个函数中模板的参数,不同的数值,所选择的模板不一样。
2、另外两种加载测试用例的方法
1)通过用例模块进行加载(不常用)
suite = unittest.defaultTestLoader.loadTestsFromModule(模块)
举例:
#导入模块
from code_demo.testcases import test_login
suite = unittest.defaultTestLoader.loadTestsFromModule(test_login)
注意1: defaultTestLoader是TestLoader这个类的对象。 源码里面defaultTestLoader = TestLoader();loadTestsFromModule()这是个函数。这里是:对象调用函数。
注意2: 这里对用例模块的加载,模块是指:例如:登录成功,登录失败。这种py文件(也可以这么说:是py文件夹里面的py文件)
2)通过测试类收集(不常用)
unittest.defaultTestLoader.loadTestsFromTestCase(测试类)
举例:
导入测试类
from code_demo.testcases.test_demo import TestDemo
suite = unittest.defaultTestLoader.loadTestsFromTestCase(TestDemo)
注意:这个就相当于py文件里面的某个类名
一个完整版的演示:
(1) fun1文件定义了2个函数(用于进行测试)
(2)testcase文件夹里面放入测试用例文件(文件当中定义一个类,类里面有2条用例(也就是以test开头了2个函数))
(3)main文件里面主要是用来加载测试用例,以及执行测试用例的入口
(4)report测试报告
如果用例失败,这个会有失败的明显
四、在测试用例里添加用例描述(在报告里面展示)
举例:
总结
平时用测试套件很容易忘记,在这里详细的分步骤解析一下具体的用法。以及第三方测试报告的用法。