unittest框架及原理

一、unittest框架及原理介绍

1、unittest最核心的四个概念

 2、UnittestTestCase类的用法

测试用例类:自己定义的类只要继承于unittest中的TestCase那么这个类就是一个测试用例类

测试用例:测试用例类中,以test开头的方法就是一条测试用例

用例执行通没通过的评判标准:断言异常

import unittest

from Login import login_check

class LoginTestCases(unittest.TestCase):
    def test_login_pass(self):
        #第一步:准备测试用例数据
        #1、用例的参数:可用元组,列表和字典
        data=("python24","lemonban")
        #2、预期结果
        expected={"code":0,"msg":"登录成功"}
        #第二步:执行功能函数,获取实际结果
        result=login_check(*data)
        #第三步:比对实际结果和预期结果
        # assert expected==result
        self.assertEqual(result,expected)

# 如果直接运行这个文件,就使用unittest中的main函数来执行测试用例
if __name__ == '__main__':
    unittest.main()

3、UnittestTestSuit类的用法

import unittest

#第一步:创建一个测试套件
suit=unittest.TestSuite()

#第二步:将测试用例加载到测试套件中
#第1种,通过模块加载用例,把模块名作为参数,将该模块中所有测试用例全部加载到套件中
#创建一个加载对象
import Testcases
load=unittest.TestLoader()
suit.addTest(load.loadTestsFromModule(Testcases))

#第2种:通过测试用例类去加载,把模块中的测试类作为参数,将该测试用例类中所有测试用例加载到套件中
import Testcases
load=unittest.TestLoader()
suit.addTest(load.loadTestsFromTestCase(Testcases.LoginTestCases))

#第3种,添加单条测试用例,先导入测试用例类,再创建一个测试类对象,把测试用例方法名作为参数(unittest.TestCase有参数为字符串类型)
from Testcases import LoginTestCases
# 创建一个用例对象
# 注意点:通过用例类去创建测试用例对象的时候,需要传入用例的方法名(字符串类型)
case=LoginTestCases("test_login_pass")
suit.addTest(case)

# 第4种,指定测试用例的所在的目录路径,把路径作为参数,将该路径下的所有用例加载到套件中
loader = unittest.TestLoader()
suite.addTest(loader.discover(r"用例文件所在的目录的绝对路径"))

#第三步:创建一个测试运行程序启动器

#第1种:使用unittest自带的启动器
runner=unittest.TextTestRunner()

#第四步:使用启动器去执行套件,把套件作为参数
runner.run(suite)

4、使用TestRunerNew模块生成html测试报告

from HTMLTestRunnerNew import HTMLTestRunner

#第三步:创建一个测试运行程序启动器

#第2种:使用HTMLTestRunner传入参数生产启动器
#参数1:打开测试报告文件,必须是html后缀的文件,模式"wb",以二进制模式覆盖写入,将句柄传给stream
#参数2:verbosity=2为默认参数,可以不用填写
#参数3:tester,报告中显示的测试人员
#参数4:description,报告的描述信息
#参数5:title,报告的标题
runner=HTMLTestRunner(stream=open("report.html","wb"),tester="xiaosongshu",description="描述信息",title="登录功能测试报告")

5、Unittestfixture的使用

是写在测试用例类里面的,用于测试环境搭建或销毁

# 每条用例执行之前都会执行,用例的前置条件,以print输出的在测试报告中会显示出来
def setUp(self):
    print("用例{}开始执行--".format(self))

# 每条用例执行之后都会执行,用例的后置处理,以print输出的在测试报告中会显示出来
def tearDown(self):
    print("用例{}执行结束--".format(self))

# 当成测试用例类中的用例执行之前,会执行该方法,print输出的不在报告中显示,在控制台显示
@classmethod
def setUpClass(cls):
    print("-----setup---classs-----")

# 当成测试用例类中的用例执行完毕,会执行该方法,print输出的不在报告中显示,在控制台显示
@classmethod
def tearDownClass(cls):
    print("-----teardown---classs-----")

原文地址:https://www.cnblogs.com/python-squirrel/p/12144246.html