Python-unittest测试学习

一、unittest框架介绍

1、unittest是Python自带的单元测试框架,受到Java的Junit启发,可以用来自动化测试框架的用例组织执行框架,也可以对python代码进行单元测试。
2、优点:提供用例组织与执行方法;提供比较方法;提供丰富的日志、清晰的报告。

二、unittest核心工作流程

1、在使用unitest作为单元测试框架时,最常用的为unit.testcaseTestFixture;测试用例类继承unit.testcase,mock测试方法外部依赖,assert断言结果的正确性,coverage查看单元测试覆盖度;
2、在使用unitest作为自动化测试框架时,最常用的为TestFixtureTestCaseTestSuiteTestRunner,此次着重介绍作为自动化测试框架时的使用方法。

三、unittest核心类介绍

1、TestFixture

用途:主要用于测试用例的环境,包括执行用例前的环境准备(setUp)、执行完成后的环境恢复(tearDown);
使用方法介绍:

setUp():准备环境,执行每个测试用例的前置条件;
tearDown():环境还原,执行每个测试用例的后置条件;
setUpClass():必须使用@classmethod装饰器,所有case执行的前置条件,只运行一次;
tearDownClass():必须使用@classmethod装饰器,所有case运行完后只运行一次;
2、Testcase

用途:
(1)主要用于编写测试用例,在使用时测试用例类需要继承unittest.Testcase类,assert断言测试用例执行结果,unittest.main()用来执行测试用例;
(2)测试用例类名必须以Test开头,并且测试用例也需要使用test开头,执行时只会执行以test开头的方法;
使用方法介绍:

import unittest
from unittest import mock

import mock_demo_1


class TestMathClass(unittest.TestCase):
    """测试两个数相加用例"""

    def test_add(self):
        # 初始化被测函数类实例
        math = mock_demo_1.MathClass()
        # mock add方法 返回10
        math.add = mock.Mock(return_value=15)
        # 调用被测函数
        result = math.add(5, 10)
        # 断言实际结果和预期结果
        self.assertEqual(15, result)


if __name__ == '__main__':
    unittest.main()

3、TestSuite

用途:
(1)默认情况下,执行用例时会按照test的 A-Z、a-z的顺序执行,如果想要修改默认的执行顺序,让执行顺序按照我们的意愿来,就需要使用TestSuite,TestSuite主要是用来把多个测试用例集合起来,按照集合的顺序执行;
(2)使用addTest()或addTests()向suite中添加用例,用例的执行顺序按照添加的顺序执行;
使用方法:
(1)直接添加testcase

# 构建suite对象
suite = unittest.TestSuite()
# 定义测试用例集
alltestnames = [TestFunc("test_add"),TestFunc("test_minus"),TestFunc("test_multi"),TestFunc("test_divide")]
    for test in alltestnames:
        try:
            #最关键的就是这一句,循环执行数据组里的用例。
            suite.addTest(unittest.defaultTestLoader.loadTestsFromName(test))
            print 'SUCCESS: run test "%s".' % test
     runner = unittest.TextTestRunner(verbosity=2)
     # 执行suite测试集
     runner.run(suite)

(2)TestSuite可以再包含testsuite

suite1 = module.TheTestSuite()
suite2=module.TheTestSuite()
alltests=unittest.TestSuite([suite1],[suite2])

(3)跳过执行case
使用Skip装饰器可以跳过执行某些case

1)skip():无条件跳过
@unittest.skip("i don't want to run this case. ")2)skipIf(condition,reason):如果condition为true,则 skip
@unittest.skipIf(condition,reason)3)skipUnless(condition,reason):如果condition为False,则skip
@unittest.skipUnless(condition,reason)

4、TestRunner

TestRunner主要为TestLoader类和TestHTMLRunner
用途:
(1)TestLoader主要用于加载测试用例,loadTestsFrom*()方法从各个地方寻找testcase;
(2)TextTestRunner():执行测试用例;
使用方法:

unittest.TestLoader().loadTestsFromTestCase(testCaseClass)
unittest.TestLoader().loadTestsFromModule(module)
unittest.TestLoader().loadTestsFromName(name,module=None)
unittest.TestLoader().loadTestsFromNames(names,module=None)
unittest.TestLoader().getTestCaseNames(testCaseclass)
unittest.TestLoader().discover()
import unittest
import os
# 用例的路径
case_path = os.path.join(os.getcwd(),"case")
# 报告存放的路径
report_path = os.path.join(os.getcwd(),"report")
def all_cases():
    discover= unittest.defaultTestLoader.discover(case_path,pattern="test*.py",top_level_dir=None)
    print(discover)
    return discover
if __name__ == "__main__":
# 执行测试用例
    runner = unittest.TextTestRunner(verbosity=2)
    runner.run(all_cases())
5、HTMLTestRunner

用途:HTMLTestRunner主要用于生成测试报告
使用方法:

HTMLTestRunner()方法有三个参数:
--stream:测试报告写入文件的存储区域
--title:测试报告的主题
--description:测试报告的描述
runner = HTMLTestRunner.HTMLTestRunner(
        stream = fp,
        title = u'【测试】测试执行报告' ,
        description =  u'【测试】测试HTMLTestRunner'
    runner.run(suite)
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Pythonunittest库提供了一种基于单元测试测试框架,是一个方便易用的Python测试框架。使用unittest库进行接口自动化测试可以提高测试效率和质量,本文将分享如何使用Python unittest库搭建接口自动化测试框架。 第一步:安装Python unittest库 首先需要安装Python unittest库,Python unittest库是默认安装在Python中的,无需单独安装。 第二步:安装requests模块 接口自动化测试需要使用requests模块来发送HTTP请求、获取响应等操作,因此需要安装requests模块。使用pip安装requests命令如下: pip install requests 第三步:编写测试用例 使用unittest框架编写测试用例,首先需要导入unittest库并创建测试类,编写测试方法,方法名必须以test开头,并使用assert断言方法进行验证。例如: import unittest import requests class TestApi(unittest.TestCase): def test_get_users(self): url = 'http://localhost:8080/api/users' res = requests.get(url) self.assertEqual(res.status_code, 200) self.assertIsNotNone(res.json()) 第四步:执行测试用例 使用unittest框架执行测试用例,使用unittest.main()方法运行所有测试用例。例如: if __name__ == '__main__': unittest.main() 执行测试用例后,将输出测试结果,包括测试用例总数、成功数、失败数等。 第五步:持续集成 持续集成可以帮助实现自动化测试,可以将上述步骤集成到自动化测试框架中,提高测试效率和质量。使用持续集成工具,例如Jenkins,可以实现自动化测试的调度和执行,定期输出测试报告,是测试自动化化的不二选择。 在以上步骤中,请求地址和验证方法需要根据具体需求进行更改,但是编写测试用例的方法是类似的,熟练掌握unittest库可以快速搭建接口自动化测试框架,提高测试效率和质量。 ### 回答2: Python unittest requests 接口自动化测试框架搭建教程博客是指一篇博客文章,介绍如何使用Python unittest与requests库搭建接口自动化测试框架。该教程博客有如下几个方面: 1. 简单介绍Python unittest与requests库,以及它们在接口自动化测试中的使用; 2. 详细讲解如何安装Python unittest和requests库,并编写测试用例; 3. 讲解如何通过使用Python unittest的setUp()和tearDown()方法,在测试用例执行前后进行一些操作,以便更好地进行测试; 4. 介绍如何运行测试用例,并查看测试结果,以及如何进行测试报告生成; 5. 提供一些实例,展示如何使用Python unittest与requests库搭建接口自动化测试框架。 通过这篇教程博客,读者可以学习如何使用Python unittest与requests库搭建接口自动化测试框架,并且能够快速了解并掌握这种接口自动化测试方法的流程和基本方法。此外,该教程博客也提供一些实例,帮助读者更好地理解和应用这种方法。因此,这篇教程博客对于想要学习接口自动化测试以及深入了解Python unittest和requests库的读者来说,是一篇非常有价值的文章。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值