系统学习Python——单元测试unittest:执行测试用例

这篇具有很好参考价值的文章主要介绍了系统学习Python——单元测试unittest:执行测试用例。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

分类目录:《系统学习Python》总目录
相关文章:
· 单元测试unittest:框架结构
· 单元测试unittest:测试固件
· 单元测试unittest:编写测试用例
· 单元测试unittest:执行测试用例
· 单元测试unittest:用例执行次序
· 单元测试unittest:内置装饰器
· 单元测试unittest:命令行执行测试
· 单元测试unittest:批量执行测试文件
· 单元测试unittest:测试断言
· 单元测试unittest:测试报告


unittest框架给我们准备了多种执行测试用例的方法。这里我们来学习一些经常用到的操作。

脚本自测

unittest.main会自动收集当前文件中所有的测试用例来执行:

import unittest

blog_name = 'hy592070616'

class MyTestClass(unittest.TestCase):
    @classmethod
    def setUpClass(cls):
        print('setUpClass')

    def setUp(self):
        self.blog_name = 'hy592070616'
        print('setUp')

    def test_first(self):
        blog_name_ref = blog_name + '--machine learning'
        self.assertEqual(blog_name_ref, 'hy592070616--machine learning')


    def tearDown(self):
        print('tearDown')

    @classmethod
    def tearDownClass(cls):
        print('tearDownClass')


if __name__ == '__main__':
    unittest.main()
  • if __name__ == '__main__':namemain前后都有两个下划线。我们可以在PyCharm中直接输入main来快速输入这行代码。
  • unittest.main()main后面需要加上括号,否则无法正常执行。
  • unittest.main(),是对上方脚本进行自测,不影响其他文件的调用。
通过class构造测试集合

我们可以通过unittest.TestLoader().loadTestsFromTestCase加载某个class下面的所有用例。这个是我们的一个测试用例文件testclass.py,包含了4个测试用例和2个class

# testclass.py
import unittest


class MyTestClassOne(unittest.TestCase):
    @classmethod
    def setUpClass(cls):
        print('setUpClass')

    def setUp(self):
        print('setUp')

    def test_first(self):
        print('test_first')
        self.assertEqual(0, 0)

    def test_second(self):
        print('test_second')
        self.assertEqual(0, 0)

    def tearDown(self):
        print('tearDown')

    @classmethod
    def tearDownClass(cls):
        print('tearDownClass')


class MyTestClassTwo(unittest.TestCase):
    @classmethod
    def setUpClass(cls):
        print('setUpClass')

    def setUp(self):
        print('setUp')

    def test_third(self):
        print('test_third')
        self.assertEqual(0, 0)

    def test_fourth(self):
        print('test_fourth')
        self.assertEqual(0, 0)

    def tearDown(self):
        print('tearDown')

    @classmethod
    def tearDownClass(cls):
        print('tearDownClass')


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

后续我们在其他的Python文件中导入testclass.py

import unittest
from learning_unittest import testclass

if __name__ == '__main__':
    testcase = unittest.TestLoader().loadTestsFromTestCase(testclass.MyTestClassOne)
    suite = unittest.TestSuite([testcase])
    unittest.TextTestRunner().run(suite)

运行结果如下:

Ran 2 tests in 0.000s
OK
setUpClass
setUp
test_first
tearDown
setUp
test_second
tearDown
tearDownClass

Process finished with exit code 0

上方代码先将testclass文件中的内容通过import导入,然后使用unittest提供的unittest.TestLoader().loadTestsFromTestCase方法传入testclass文件中的class,即MyTestClassOne。接下来通过unittest.TestSuite([testcase])组装测试用例集合。最后通过unittest.TextTestRunner提供的run方法来执行组装好的集合。但如果:

# testclass.py
import unittest


class MyTestClassOne(unittest.TestCase):
    @classmethod
    def setUpClass(cls):
        print('setUpClass')

    def setUp(self):
        print('setUp')

    def test_first(self):
        print('test_first')
        self.assertEqual(0, 0)

    def test_second(self):
        print('test_second')
        self.assertEqual(0, 0)

    def tearDown(self):
        print('tearDown')

    @classmethod
    def tearDownClass(cls):
        print('tearDownClass')


class MyTestClassTwo(unittest.TestCase):
    @classmethod
    def setUpClass(cls):
        print('setUpClass')

    def setUp(self):
        print('setUp')

    def test_third(self):
        print('test_third')
        self.assertEqual(0, 0)

    def test_fourth(self):
        print('test_fourth')
        self.assertEqual(0, 0)

    def tearDown(self):
        print('tearDown')

    @classmethod
    def tearDownClass(cls):
        print('tearDownClass')


if __name__ == '__main__':
    testcase = unittest.TestLoader().loadTestsFromTestCase(MyTestClassOne)
    suite = unittest.TestSuite([testcase])
    unittest.TextTestRunner().run(suite)


将组装testcase语句写入testclass文件中,则运行testclass文件会执行testclass文件中的所有class,而不是只执行MyTestClassOne

============================= test session starts =============================
platform win32 -- Python 3.6.4, pytest-3.3.2, py-1.5.2, pluggy-0.6.0
rootdir: D:\LearningPython\learning_unittest, inifile:
collected 4 items
testclass.py setUpClass
.setUp
test_first
tearDown
.setUp
test_second
tearDown
tearDownClass
setUpClass
.setUp
test_fourth
tearDown
.setUp
test_third
tearDown
tearDownClass


========================== 4 passed in 0.03 seconds ===========================
Process finished with exit code 0
通过addTest构建测试集合

我们可以通过addTest将某个class下面的测试用例添加到集合,然后执行测试集合:

import unittest
from learning_unittest import testclass

if __name__ == '__main__':
    suite = unittest.TestSuite()
    suite.addTest(testclass.MyTestClassOne('test_first'))
    suite.addTest(testclass.MyTestClassTwo('test_third'))
    unittest.TextTestRunner().run(suite)

上述代码从MyTestClassOne类中取了test_first测试用例,从MyTestClassTwo类中取了test_third测试用例,两者组成了一个测试用例集合,运行结果如下:

Ran 2 tests in 0.000s
OK
setUpClass
setUp
test_first
tearDown
tearDownClass
setUpClass
setUp
test_third
tearDown
tearDownClass

Process finished with exit code 0
通过discover构建测试集合

我们还可以通过unittest.TestLoader().discover('.')在指定目录中寻找符合条件的测试用例,从而组成测试集合。关于discover的用法请参考代码:

import unittest
from learning_unittest import testclass

if __name__ == '__main__':
    suite = unittest.TestLoader().discover('.')
    unittest.TextTestRunner(verbosity=2).run(suite)

这里的discover,我们传递的目录是一个‘.’,代表文件所在目录。执行该文件的话,就会从该文件所在目录中去寻找所有符合条件的测试用例。discover的用法我们会在后续的文章再次讲解。文章来源地址https://www.toymoban.com/news/detail-456625.html

到了这里,关于系统学习Python——单元测试unittest:执行测试用例的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • [Python]unittest-单元测试

    目录 unittest的大致构成: Test Fixture Test Case-测试用例 Test Suite-测试套件 Test Runner 批量执行脚本 makeSuite() TestLoader discover() 用例的执行顺序 忽略用例执行 skip skipIf skipUnless 断言 HTML测试报告 错误截图 unittest是python中的单元测试框架 大致作用: 提供用例的组织与执行-组织大量的测

    2024年02月08日
    浏览(33)
  • Python高级用法:使用unittest进行单元测试

    Python中含有一个单元测试模块unittest,我们可以使用其中的工具来测试代码。在编写测试用例后,可以查看一系列输入是否得到了预期的输出。单元测试专注于测试软件单元,软件单元可以被理解为应用程序代码的最小可测试部分。 在代码中我们需要测试的是一个数字是否为

    2024年01月19日
    浏览(54)
  • Python中的单元测试框架:使用unittest进行有效测试

    在软件开发中,单元测试是一种测试方法,它用于检查单个软件组件(例如函数或方法)的正确性。Python 提供了一个内置的单元测试库,名为 unittest ,可以用来编写测试代码,然后运行测试,并报告测试结果。 本文将向你介绍如何使用 unittest 来编写和运行单元测试。通过阅

    2024年03月09日
    浏览(42)
  • Python接口自动化之unittest单元测试

    以下主要介绍unittest特性、运行流程及实际案例。 一、单元测试三连问 1、 什么是单元测试?   按照阶段来分,一般就是单元测试,集成测试,系统测试,验收测试。单元测试是对 单个模块 、 单个类 或者 单个函数 进行测试。 将访问接口的过程封装在函数里面; 接口测试就

    2024年02月07日
    浏览(51)
  • 测试人必会的Python内置库:unittest.mock(单元测试mock的基础使用)

    unittest.mock是用于在单元测试中模拟和替换指定的对象及行为,以便测试用例更加准确地进行测试运行。例如对于以下代码,想要针对函数func_a写一个简单的单元测试: 但是这样的话,函数func_b和func_c的逻辑都需要一起测试,在单元测试中这明显是不合理的,对于想要测试的

    2024年02月01日
    浏览(47)
  • 2.接口自动化测试学习-执行excel测试用例

    编程语言 编程工具 自动化测试框架:pytest 报告可视化:allure 持续方案:CI持续集成-jenkins 仓库服务器(自动化执行):github/gitlab/gitee 测试管理工具:jira

    2024年04月15日
    浏览(67)
  • Python单元测试:一步步了解测试框架、测试用例和覆盖率分析

    在软件开发中,单元测试是一个非常重要的环节。它可以确保你的代码能够正常运行,并且在将来的修改中不会出现问题。在Python中,单元测试是非常容易实现的。本文将介绍Python单元测试的所有知识点,包括测试框架,测试用例,测试装置,测试套件和覆盖率分析。 Pytho

    2024年02月04日
    浏览(60)
  • 单元测试|unittest生成测试报告

    测试报告为测试结果的统计即展示,是自动化测试不可或缺的一部分,利用unittest 可以生成测试报告。 使用第三方 HTMLTestRunner 执行测试用例集,生成网页版测试报告 HTMLTestRunner是Python标准库的unittest模块的一个扩展,在使用该模块之前 要下载HTMLTestRunner.py文件,并将该文件保

    2024年02月09日
    浏览(39)
  • Python接口自动化测试:Postman使用-用例执行

    一个完整的测试,是必须要有断言的,没有断言就相当于没有预期结果是不完整的,Postman给我们提供了方便的断言方式 可以通过JS脚本来编写Pre-request Script和Tests Script Pre-request Script :预置脚本,可以用来修改一些默认参数,在请求发送之前,有点类型unittest里面的setUp()方法

    2024年02月11日
    浏览(65)
  • 单元测试、集成测试、功能测试——Unittest

     颗粒度最小,一般由开发小组采用白盒方式来测试,主要测试单元是否符合“设计”;是指 对软件中的最小可测试单元进行检查和验证  介于单元测试和系统测试之间,一般由开发小组采用白盒+黑盒的方法来测试,即验 证“设计”又验证“需求”。主要用来测试模板与模

    2023年04月08日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包