unittest笔记

import unittest


class demo(unittest.TestCase):
    @classmethod
    def setUpClass(cls) -> None:
        print("setup class")

    @classmethod
    def tearDownClass(cls) -> None:
        print("teardown class")

    def setUp(self) -> None:
        # 执行用例前需要准备的登录操作或者数据等可以在setup中准备,在测试用例执行前调用
        print("set up")

    def tearDown(self) -> None:
        # 对资源清空的操作或者数据库的断开,不影响其他用例执行,保证测试用例的独立性,在测试用例执行后调用
        # unittest中setUp 和tearDown方法都是自动调用的,不写也可以调用,写了就相当于复写这些功能,可以添加新功能
        print("teardown")

    def test_case01(self):
        print("testcase01")
        self.assertEqual(1, 1, "判断相等")
        self.assertIn('h', 'this', '不在里面')
        # 保证传入的两个数是相等,当出错的时候回打印判断相等

    def test_case02(self):
        print("testcase02")
        self.assertEqual(2, 2, "判断相等")

    # self.assertNotIn('h','this','不在里面')

    def test_case03(self):
        print("testcase03")
        self.assertEqual(2, 3, "判断相等")
        # self.assertNotIn('h','this','不在里面')

    @unittest.skip
    # 也可以加入条件
    # @unittest.skipIf(1+2==3,'跳过这条用例')
    # 跳过test_case04
    def test_case04(self):
        print("testcase04")
        self.assertEqual(3, 3, "判断相等")


class demo1(unittest.TestCase):
    def test_demo1_case0(self):
        print("test_demo1_case0")

    def test_demo1_case1(self):
        print("test_demo1_case1")


if __name__ == '__main__':
    # 能把当前模块全部的以test_开头的所有案例都执行
    # 如果不想都执行可以用unittest.TestSuite
    unittest.main()


  1. 选择某些case执行
import unittest


class demo(unittest.TestCase):
    @classmethod
    def setUpClass(cls) -> None:
        print("setup class")

    @classmethod
    def tearDownClass(cls) -> None:
        print("teardown class")

    def setUp(self) -> None:
        # 执行用例前需要准备的登录操作或者数据等可以在setup中准备,在测试用例执行前调用
        print("set up")

    def tearDown(self) -> None:
        # 对资源清空的操作或者数据库的断开,不影响其他用例执行,保证测试用例的独立性,在测试用例执行后调用
        # unittest中setUp 和tearDown方法都是自动调用的,不写也可以调用,写了就相当于复写这些功能,可以添加新功能
        print("teardown")

    def test_case01(self):
        print("testcase01")
        self.assertEqual(1, 1, "判断相等")
        self.assertIn('h', 'this', '不在里面')
        # 保证传入的两个数是相等,当出错的时候回打印判断相等

    def test_case02(self):
        print("testcase02")
        self.assertEqual(2, 2, "判断相等")

    # self.assertNotIn('h','this','不在里面')

    def test_case03(self):
        print("testcase03")
        self.assertEqual(2, 3, "判断相等")
        # self.assertNotIn('h','this','不在里面')

    @unittest.skip
    # 也可以加入条件
    # @unittest.skipIf(1+2==3,'跳过这条用例')
    # 跳过test_case04
    def test_case04(self):
        print("testcase04")
        self.assertEqual(3, 3, "判断相等")


class demo1(unittest.TestCase):
    def test_demo1_case0(self):
        print("test_demo1_case0")

    def test_demo1_case1(self):
        print("test_demo1_case1")


if __name__ == '__main__':
    # 能把当前模块全部的以test_开头的所有案例都执行
    # 如果不想都执行可以用unittest.TestSuite
    suite = unittest.TestSuite()
    suite.addTest(demo("test_case01"))
    suite.addTest(demo1("test_demo1_case1"))
    unittest.TextTestRunner().run(suite)

image

  1. 选择某些类执行
import unittest


class demo(unittest.TestCase):
    @classmethod
    def setUpClass(cls) -> None:
        print("setup class")

    @classmethod
    def tearDownClass(cls) -> None:
        print("teardown class")

    def setUp(self) -> None:
        # 执行用例前需要准备的登录操作或者数据等可以在setup中准备,在测试用例执行前调用
        print("set up")

    def tearDown(self) -> None:
        # 对资源清空的操作或者数据库的断开,不影响其他用例执行,保证测试用例的独立性,在测试用例执行后调用
        # unittest中setUp 和tearDown方法都是自动调用的,不写也可以调用,写了就相当于复写这些功能,可以添加新功能
        print("teardown")

    def test_case01(self):
        print("testcase01")
        self.assertEqual(1, 1, "判断相等")
        self.assertIn('h', 'this', '不在里面')
        # 保证传入的两个数是相等,当出错的时候回打印判断相等

    def test_case02(self):
        print("testcase02")
        self.assertEqual(2, 2, "判断相等")

    # self.assertNotIn('h','this','不在里面')

    def test_case03(self):
        print("testcase03")
        self.assertEqual(2, 3, "判断相等")
        # self.assertNotIn('h','this','不在里面')

    @unittest.skip
    # 也可以加入条件
    # @unittest.skipIf(1+2==3,'跳过这条用例')
    # 跳过test_case04
    def test_case04(self):
        print("testcase04")
        self.assertEqual(3, 3, "判断相等")


class demo1(unittest.TestCase):
    def test_demo1_case0(self):
        print("test_demo1_case0")

    def test_demo1_case1(self):
        print("test_demo1_case1")


class demo2(unittest.TestCase):
    def test_demo2_case0(self):
        print("test_demo2_case0")

    def test_demo2_case1(self):
        print("test_demo2_case1")


if __name__ == '__main__':
    # 指执行demo和demo1,不执行demo2
    suite = unittest.TestLoader().loadTestsFromTestCase(demo)
    suite1 = unittest.TestLoader().loadTestsFromTestCase(demo1)
    suiteall = unittest.TestSuite([suite, suite1])
    unittest.TextTestRunner().run(suiteall)

image

  1. 匹配某个目录下所有以test开头的py文件,执行这些文件下的所有测试用例

    准备两个test开头的文件:
    image
    test_unittest01.py的内容为
import unittest


class demo(unittest.TestCase):
    @classmethod
    def setUpClass(cls) -> None:
        print("setup class")

    @classmethod
    def tearDownClass(cls) -> None:
        print("teardown class")

    def setUp(self) -> None:
        # 执行用例前需要准备的登录操作或者数据等可以在setup中准备,在测试用例执行前调用
        print("set up")

    def tearDown(self) -> None:
        # 对资源清空的操作或者数据库的断开,不影响其他用例执行,保证测试用例的独立性,在测试用例执行后调用
        # unittest中setUp 和tearDown方法都是自动调用的,不写也可以调用,写了就相当于复写这些功能,可以添加新功能
        print("teardown")

    def test_case01(self):
        print("testcase01")
        self.assertEqual(1, 1, "判断相等")
        self.assertIn('h', 'this', '不在里面')
        # 保证传入的两个数是相等,当出错的时候回打印判断相等

    def test_case02(self):
        print("testcase02")
        self.assertEqual(2, 2, "判断相等")

    # self.assertNotIn('h','this','不在里面')

    def test_case03(self):
        print("testcase03")
        self.assertEqual(2, 3, "判断相等")
        # self.assertNotIn('h','this','不在里面')

    def test_case04(self):
        print("testcase04")
        self.assertEqual(3, 3, "判断相等")


class demo1(unittest.TestCase):
    def test_demo1_case0(self):
        print("test_demo1_case0")

    def test_demo1_case1(self):
        print("test_demo1_case1")

test_unittest.py

import unittest


class demo(unittest.TestCase):
    @classmethod
    def setUpClass(cls) -> None:
        print("setup class")

    @classmethod
    def tearDownClass(cls) -> None:
        print("teardown class")

    def setUp(self) -> None:
        # 执行用例前需要准备的登录操作或者数据等可以在setup中准备,在测试用例执行前调用
        print("set up")

    def tearDown(self) -> None:
        # 对资源清空的操作或者数据库的断开,不影响其他用例执行,保证测试用例的独立性,在测试用例执行后调用
        # unittest中setUp 和tearDown方法都是自动调用的,不写也可以调用,写了就相当于复写这些功能,可以添加新功能
        print("teardown")

    def test_case01(self):
        print("testcase01")
        self.assertEqual(1, 1, "判断相等")
        self.assertIn('h', 'this', '不在里面')
        # 保证传入的两个数是相等,当出错的时候回打印判断相等

    def test_case02(self):
        print("testcase02")
        self.assertEqual(2, 2, "判断相等")

    # self.assertNotIn('h','this','不在里面')

    def test_case03(self):
        print("testcase03")
        self.assertEqual(2, 3, "判断相等")
        # self.assertNotIn('h','this','不在里面')

    @unittest.skip
    # 也可以加入条件
    # @unittest.skipIf(1+2==3,'跳过这条用例')
    # 跳过test_case04
    def test_case04(self):
        print("testcase04")
        self.assertEqual(3, 3, "判断相等")


class demo1(unittest.TestCase):
    def test_demo1_case0(self):
        print("test_demo1_case0")

    def test_demo1_case1(self):
        print("test_demo1_case1")


class demo2(unittest.TestCase):
    def test_demo2_case0(self):
        print("test_demo2_case0")

    def test_demo2_case1(self):
        print("test_demo2_case1")


if __name__ == '__main__':
    discover = unittest.defaultTestLoader.discover("./",'test*.py')
    unittest.TextTestRunner().run(discover)

执行test_unittest.py


  1. 报告
关闭