Unittest学习

1.测试case

unittest.py

# coding:utf-8
import time
import unittest
import os

class Test1(unittest.TestCase):
    @classmethod
    def setUpClass(cls):
        print("setUpClass初始化操作:用例开始前只执行一次")

    @classmethod
    def tearDownClass(cls):
        print("tearDownClass收尾清理操作:用例结束时候只执行一次")

    def setUp(self):
        print("setUp每次用例开始前都会执行!!!")

    def tearDown(self):
        print("tearDown每次用例结构都会执行!!!")

    def test_01(self):
        time.sleep(1)
        print("正在执行用例01")

    def test_02(self):
        time.sleep(1)
        print("正在执行用例02")

    def test_03(self):
        a = 1
        b = 2
        assert a == b

2.装载和生成报告

LoadAndReport.py

# coding = utf-8
import os
import unittest
import time
import HTMLTestRunner

# 装载目录
path = os.getcwd()    # 获取当前工作路径
print(path)
discover = unittest.defaultTestLoader.discover(path, pattern='unittest*')   # pattern 装载需要运行的case的python文件
# runner = unittest.TextTestRunner()
# runner.run(discover)

# 生成测试报告
report_path = os.getcwd() + '\\Report\\' + time.strftime('%Y-%m-%d %H%M%S') + '.html'
fp = open(report_path, 'wb')
runner = HTMLTestRunner.HTMLTestRunner(stream=fp, verbosity=1, title='这个测试报告', description='这是描述')
runner.run(discover)
fp.close()

 

3.生成的报告

 

4.unittest相关

 

 

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、付费专栏及课程。

余额充值