Unittest使用和代码简介

本文详细介绍了Python的unittest模块,包括unittest的基本用法,TestCase、TestSuite、TestLoader和TestRunner之间的关系,以及unittest.main()的功能。通过学习,读者可以深入理解unittest的运作机制,并能有效地进行单元测试。
摘要由CSDN通过智能技术生成


前段时间有学习过unittest这个模块,但是,没有熟练使用,还是存在好多疑问。今天又重新花时间学习,比较彻底的搞清楚了。记录下来,希望对那些有同样疑问的人,有些帮助。

首先,介绍以下unittest的基本用法。

第1种用法(以下代码是官方文档的sample)。
import unittest

class TestSequenceFunctions(unittest.TestCase):

    def setUp(self):
        self.seq = range(10)

    def test_choice(self):
        element = random.choice(self.seq)
        self.assertTrue(element in self.seq)

    def test_sample(self):
        with 
unittest和pytest都是Python中常用的单元测试框架,用于测试代码的正确性和可靠性。下面将分别介绍它们的代码学习实践。 一、unittest 1. 测试框架初始化 ``` import unittest class TestDemo(unittest.TestCase): def setUp(self): # 测试用例执行前的初始化操作 pass def tearDown(self): # 测试用例执行后的清理操作 pass def test_demo(self): # 测试用例 pass if __name__ == '__main__': unittest.main() ``` 2. 测试用例编写 ``` import unittest class TestDemo(unittest.TestCase): def test_add(self): self.assertEqual(1 + 2, 3) def test_subtract(self): self.assertEqual(3 - 2, 1) if __name__ == '__main__': unittest.main() ``` 3. 断言方法 unittest提供了多种断言方法,常用的有以下几种: - assertEqual(a, b):判断a是否等于b - assertNotEqual(a, b):判断a是否不等于b - assertTrue(x):判断x是否为True - assertFalse(x):判断x是否为False - assertIn(a, b):判断a是否在b中 - assertNotIn(a, b):判断a是否不在b中 - assertIs(a, b):判断a是否是b - assertIsNot(a, b):判断a是否不是b 4. 测试套件 测试套件是由多个测试用例组成的集合,可以通过TestSuite类来创建测试套件。 ``` import unittest class TestAdd(unittest.TestCase): def test_add1(self): self.assertEqual(1 + 2, 3) def test_add2(self): self.assertEqual(2 + 3, 5) class TestSubtract(unittest.TestCase): def test_subtract1(self): self.assertEqual(3 - 2, 1) def test_subtract2(self): self.assertEqual(5 - 3, 2) if __name__ == '__main__': suite = unittest.TestSuite() suite.addTest(TestAdd()) suite.addTest(TestSubtract()) unittest.TextTestRunner().run(suite) ``` 二、pytest 1. 基本用法 ``` def test_add(): assert 1 + 2 == 3 def test_subtract(): assert 3 - 2 == 1 ``` 2. 参数化测试 ``` import pytest @pytest.mark.parametrize('a, b, expected', [ (1, 2, 3), (2, 3, 5), ]) def test_add(a, b, expected): assert a + b == expected ``` 3. fixture fixture是pytest中的一个重要概念,可以用来提供测试用例所需要的资源。比如,我们可以通过fixture来创建数据库连接、打开浏览器等。 ``` import pytest import requests @pytest.fixture() def url(): return 'http://www.example.com' def test_request(url): response = requests.get(url) assert response.status_code == 200 ``` 4. mark mark是pytest中的一个标记机制,可以用来标记某些测试用例,方便对其进行筛选和执行。 ``` import pytest @pytest.mark.smoke def test_add(): assert 1 + 2 == 3 @pytest.mark.regression def test_subtract(): assert 3 - 2 == 1 ``` pytest支持自定义mark,比如我们可以通过以下方式自定义一个slow mark: ``` import pytest def pytest_configure(config): config.addinivalue_line( "markers", "slow: mark test as slow" ) @pytest.mark.slow def test_add(): assert 1 + 2 == 3 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值