测试:unittest单元测试

unittest是什么

unittest 是一个单元测试框架,支持测试自动化,配置共享和关机代码测试。支持将测试样例聚合到测试集中,并将测试与报告框架独立

安装

unittest是python内置的单元测试框架,无需额外安装

使用

1、测试类(测试用例)

建议以Test开头(非强制)方便TestLoader默认加载,必须继承unittest.TestCase,类中测试方法都需要test开头,因为测试用例只会执行以test开头的测试方法。

import unittest


class TestLogin(unittest.TestCase):
    def test_login(self):
        try:
            self.assertEqual(1, 3 - 3)
        except AssertionError as e:
            # 这里可以进行断言出错的处理
            print('结果不一致', e)
            raise AssertionError


# 以python脚本的形式运行测试用例
if __name__ == '__main__':
    unittest.main()

测试类中方法执行顺序:哪找方法名的ascii码排序执行

2、断言(self.assert())

断言结果

  • . 表示通过 或者 pass
  • F False,表示断言没有通过
  • E Error,表示程序内部发生了错误

断言类型(常用)

  1. assertEqual

断言是否相等

import unittest


class TestLogin(unittest.TestCase):
    def test_login_success(self):
        expected = 1  # 预期结果
        actual = 2  # 实际结果
        self.assertEqual(expected, actual)

运行结果:
assertEqual 显示信息详细,会将预期结果和实际结果打印出来
2. assertTrue

断言表达式是否成立

import unittest;


class TestLogin(unittest.TestCase):
    def test_login_success(self):
        expected = 1  # 预期结果
        actual = 2  # 实际结果
        self.assertTrue(expected == actual)

运行结果:

SetUp(前置条件方法)

每一个测试用例方法执行之前都会运行的方法

tearDown(后置条件方法)

每一个测试用例方法执行完成后都会运行的方法

TestLoader(加载器)

用于加载多个测试用例,返回一个TestSuite

import os
import unittest

# 1、初始化testLoader
from test_cases import test_one, test_two
from test_cases.test_one import TestOne
from test_cases.test_two import TestTwo

testLoader = unittest.TestLoader()

# 2、查找测试用例进行加载
dir_path = os.path.dirname(os.path.abspath(__file__))
case_path = os.path.join(dir_path, 'test_cases')
# case_path 测试模块所在文件夹路径
# pattern 加载特定规则的测试用例 默认以test开头的
# discover 在指定文件夹中加载符合指定规则的测试用例
suite = testLoader.discover(case_path, pattern='test*.py')
# loadTestsFromModule 加载指定的模块
suite_module_1 = testLoader.loadTestsFromModule(test_one)
suite_module_2 = testLoader.loadTestsFromModule(test_two)
suite_module_total = unittest.TestSuite()
# 将多个测试套件加入到一个总的测试套件中
suite_module_total.addTests(suite_module_1)
suite_module_total.addTests(suite_module_2)

# loadTestsFromTestCase 加载指定的测试类
suite_case_1 = testLoader.loadTestsFromTestCase(TestOne)
suite_case_2 = testLoader.loadTestsFromTestCase(TestTwo)
suite_case_total = unittest.TestSuite()
# 将多个测试套件加入到一个总的测试套件中
suite_case_total.addTests(suite_case_1)
suite_case_total.addTests(suite_case_2)

with open('report.txt', 'w', encoding='utf-8') as f:
    # 创建TextTestRunner
    # verbosity 指定测试报告的详细程度 可选值 0 1 2 ,2最为详细
    runner = unittest.TextTestRunner(f, verbosity=2)
    # 执行TextTestRunner
    runner.run(suite)

TestSuite(测试集合,测试套件)

经TestLoader加载多个实例后生成的测试集合

TextTestRunner(运行器)

  1. 执行测试集合
  2. 生成txt格式测试报告
import os
import unittest

# 1、初始化testLoader
testLoader = unittest.TestLoader()

# 2、查找测试用例进行加载
dir_path = os.path.dirname(os.path.abspath(__file__))
case_path = os.path.join(dir_path, 'test_cases')
# case_path 测试模块所在文件夹路径
# pattern 加载特定规则的测试用例 默认以test开头的
suite = testLoader.discover(case_path, pattern='test*.py')

with open('report.txt', 'w', encoding='utf-8') as f:
    # 创建TextTestRunner
    # verbosity 指定测试报告的详细程度 可选值 0 1 2 ,2最为详细
    runner = unittest.TextTestRunner(f, verbosity=2)
    # 执行TextTestRunner
    runner.run(suite)

HtmlTestRunner(运行器)

  1. 执行测试集合
  2. 生成html格式测试报告
    HtmlTestRunner非第三方库,需要下载对应py文件进行引入使用
    下载链接:https://github.com/Gelomen/HTMLTestReportCN-ScreenShot
import os
import unittest

# 1、初始化testLoader
from HTMLTestRunner import HTMLTestRunner
from test_cases import test_one, test_two
from test_cases.test_one import TestOne
from test_cases.test_two import TestTwo

testLoader = unittest.TestLoader()

# 2、查找测试用例进行加载
dir_path = os.path.dirname(os.path.abspath(__file__))
case_path = os.path.join(dir_path, 'test_cases')
# case_path 测试模块所在文件夹路径
# pattern 加载特定规则的测试用例 默认以test开头的
# discover 在指定文件夹中加载符合指定规则的测试用例
suite = testLoader.discover(case_path, pattern='test*.py')

with open('report.html', 'wb') as f:
    # 创建TextTestRunner
    # verbosity 指定测试报告的详细程度 可选值 0 1 2 ,2最为详细
    runner = HTMLTestRunner(f, verbosity=2)
    # 执行HtmlTestRunner
    runner.run(suite)
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值