Unittestest模块笔记

一、Unittest基本内容

(一)基本名词含义

Suit内容:
TestCase:测试用例,最小的测试单元
TestSuit:多个测试用例的集合(至少一个测试用例),包括测试用例的预置步骤(执行用例前执行),后置步骤(执行用例后执行)

二、Unittest基本方法

创建的用例集类必须继承unittest.TestCase

(一)setUpClass与tearDownClass

setUpClass与tearDownClass在一个测试集中只会出现一次

import unittest
#创建的类必须继承unittest.TestCase,否则是没用的
class Test_suit(unittest.TestCase):
    #setUpClass与tearDownClass使用前必须使用@classmethod装饰器
    @classmethod
    def setUpClass(cls) -> None:
        pass
    #setUpClass是测试集执行前最开始执行的,也只执行一次
    @classmethod
    def tearDownClass(cls) -> None:
        #要执行什么代码自己写,cls与self一样,同时cls后面接的参数可以在整个class中通用
        pass

    # tearDownClass是测试集执行完毕再执行的,也只执行一次

(二)setUp与tearDown

import unittest
class Test_suit(unittest.TestCase):
    #setUpClass与tearDownClass使用前必须使用@classmethod装饰器
    @classmethod
    def setUpClass(cls) -> None:
        pass
    #setUpClass与tearDown一样只会出现一次,但是会在每次执行用例前后分别执行一次,与ddt一起使用特别明显
    #setUpClass是测试集执行前最开始执行的,也只执行一次

    def setUp(self) -> None:
        pass

    def test_case1(self):
        pass
    #可以有多个用例
    def test_case2(self):
        pass

    def tearDown(self) -> None:
        pass

    @classmethod
    def tearDownClass(cls) -> None:
        #要执行什么代码自己写,cls与self一样,同时cls后面接的参数可以在整个class中通用
        pass

    # tearDownClass是测试集执行完毕再执行的,也只执行一次

(三)添加用例

import unittest
class Test_suit(unittest.TestCase):
    def test_case1(self):
        print("测试1")
    #可以有多个用例
    def test_case2(self):
        print("测试2")

if __name__ == '__main__':
    # 创建测试套件
    suite = unittest.TestSuite()
    """自动读取指令名称开头py文件内的用例"""
    # 指定识别测试用例的规则:识别所有test开头的py文件为测试用例,按模块名顺序执行
    # tests = unittest.defaultTestLoader.discover('测试模块所在目录' , pattern = 'test*.py')
    # suite.addTests(tests)

    #单独运行某个用例
    # suite.addTest(Test_suit('test_case1'))
    runner = unittest.TextTestRunner(verbosity=2)
    runner.run(suite)

(四)出报告

注意:

这里面有个坑,不注意是出不了报告的,就是用例和出报告的文件要分别写py文件

目录结构:

目录结构
#test.py
import unittest
class Test_suit(unittest.TestCase):
    def test_case1(self):
        print("测试1")
    #可以有多个用例
    def test_case2(self):
        print("测试2")

#result.py
import unittest
if __name__ == '__main__':
    # 创建测试套件
    suite = unittest.TestSuite()
    """自动读取指令名称开头py文件内的用例"""
    # 指定识别测试用例的规则:识别所有test开头的py文件为测试用例,按模块名顺序执行
    # tests = unittest.defaultTestLoader.discover('测试模块所在目录' , pattern = 'test*.py')
    tests = unittest.defaultTestLoader.discover(r'..\temp', pattern='test*.py')
    suite.addTests(tests)

    #单独运行某个用例
    # suite.addTest(Test_suit('test_case2'))
    with open('report.text','w') as rp:
        runner = unittest.TextTestRunner(stream=rp,verbosity=2)
        # runner = unittest.TextTestResult()
        runner.run(suite)

三、Unittest断言(全部)

(一)常用断言方法

断言方法 表达式
assertIn assertIn(self, member, container, msg=None)
assertNotIn assertNotIn(self, member, container, msg=None)
assertIs assertIs(self, expr1, expr2, msg=None)
assertIsNot assertIsNot(self, expr1, expr2, msg=None)
assertEqual assertEqual(self, first, second, msg=None)
assertNotEqual assertNotEqual(self, first, second, msg=None)
assertTrue assertTrue(self, expr, msg=None)
assertFalse assertFalse(self, expr, msg=None)

assertTrue:断言表达式是否为真,可以直接写大于,小于,等于等,相当于就是Python自带的assert方法,只是经过改造了

(二)非常用断言方法

断言方法 表达式
assertFalse assertFalse(self, expr, msg=None)
assertTrue assertTrue(self, expr, msg=None)
assertRaises assertRaises(self, expected_exception, *args, **kwargs)
assertWarns assertWarns(self, expected_warning, *args, **kwargs)
assertLogs assertLogs(self, logger=None, level=None)
assertAlmostEqual assertAlmostEqual(self,first,second,places=None,msg=None,delta=None)
assertNotAlmostEqual assertNotAlmostEqual(self, first, second, places=None, msg=None, delta=None)
断言序列一是否与序列二相等
assertListEqual assertListEqual(self, list1, list2, msg=None)
断言列表一是否与列表二相等
assertSetEqual assertSetEqual(self, set1, set2, msg=None)
assertDictEqual assertDictEqual(self, d1, d2, msg=None)
assertDictContainsSubset assertDictContainsSubset(self, subset, dictionary, msg=None)
assertCountEqual assertCountEqual(self, first, second, msg=None)
一种无序的序列比较,断言相同的元素,忽视序列。如果同一个元素出现多次,它验证元素出现的次数是否相同。
zassertMultiLineEqualebra assertMultiLineEqual(self, first, second, msg=None)
first与second必须是一个字符串
assertLess(self, a, b, msg=None) assertLess
断言a
assertLessEqual assertLessEqual(self, a, b, msg=None)
断言a<=b是否成立
assertGreater assertGreater(self, a, b, msg=None)
断言a>b是否成立,不成立断言失败
assertGreaterEqual assertGreaterEqual(self, a, b, msg=None)
assertIsNone assertIsNone(self, obj, msg=None)
assertIsNotNone assertIsNotNone(self, obj, msg=None)
空列表也能断言成功
assertRegex assertRegex(self, text, expected_regex, msg=None)

你可能感兴趣的:(Unittestest模块笔记)