unittest测试执行顺序&测试执行方式

目录

测试执行顺序

setUpClass

tearDownClass

setUp

tearDown

@unittest.skip

@unittest.skipIf 

测试执行方式:

一:直接使用unittest.main()执行

二:可执行部分测试类和其中的部分方法

三:测试类级执行

四:路径执行:


测试执行顺序

setUpClass

测试类之前执行(只执行一次)

tearDownClass

测试类之后执行(只执行一次)

setUp

测试方法之前执行(可执行多次)

tearDown

测试方法之后执行(可执行多次)

@unittest.skip

跳过执行测试方法

@unittest.skipIf 

满足条件可跳过执行测试方法

import unittest


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

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

    # 测试方法之前执行
    def setUp(self) -> None:
        print("setup")

    # 测试方法之后执行(ps:资源回收,断开数据库连接等)
    def tearDown(self) -> None:
        print("tearDown")

    def test_cast01(self):
        print("testcast01")
        self.assertEqual(1, 1, "不相等!")
        self.assertIn("oh", "oh this", "不包含!")

    def test_cast02(self):
        print("testcast02")
        self.assertEqual(1, 1, "不相等!")
        self.assertIn("oh", "oh this", "不包含!")

    # 跳过测试执行
    @unittest.skip
    def test_cast03(self):
        print("testcast03")
        self.assertEqual(1, 2, "不相等!")
        self.assertIn("oh", "oh this", "不包含!")

    @unittest.skipIf(1 + 1 == 2, "跳过条件")  # 满足条件后跳过执行
    def test_cast04(self):
        print("testcast04")
        self.assertEqual(1, 2, "不相等!")
        self.assertIn("oh", "oh this", "不包含!")


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

执行效果:

测试执行方式:

一:直接使用unittest.main()执行

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

案例如上

二:可执行部分测试类和其中的部分方法

if __name__ == '__main__':
        suite = unittest.TestSuite()
        suite.addTest(demo2("test_demo1_cast02"))
        unittest.TextTestRunner().run(suite)

import unittest


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

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

    # 测试方法之前执行
    def setUp(self) -> None:
        print("setup")

    # 测试方法之后执行(ps:资源回收,断开数据库连接等)
    def tearDown(self) -> None:
        print("tearDown")

    def test_cast01(self):
        print("testcast01")
        self.assertEqual(1, 1, "不相等!")
        self.assertIn("oh", "oh this", "不包含!")

    def test_cast02(self):
        print("testcast02")
        self.assertEqual(1, 1, "不相等!")
        self.assertIn("oh", "oh this", "不包含!")

    # 跳过测试执行
    @unittest.skip
    def test_cast03(self):
        print("testcast03")
        self.assertEqual(1, 2, "不相等!")
        self.assertIn("oh", "oh this", "不包含!")

    @unittest.skipIf(1 + 1 == 2, "跳过条件")  # 满足条件后跳过执行
    def test_cast04(self):
        print("testcast04")
        self.assertEqual(1, 2, "不相等!")
        self.assertIn("oh", "oh this", "不包含!")


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

    def test_demo1_cast02(self):
        print("test_demo2_cast02")


if __name__ == '__main__':
    suite = unittest.TestSuite()
    # suite.addTest(demo("test_cast01"))
    suite.addTest(demo2("test_demo1_cast02"))
    unittest.TextTestRunner().run(suite)

执行结果:

三:测试类级执行

if __name__ == '__main__':
    suite = unittest.TestLoader().loadTestsFromTestCase(demo2)
    suite1 = unittest.TestLoader().loadTestsFromTestCase(demo1)
    suiteall = unittest.TestSuite([suite, suite1])
    unittest.TextTestRunner().run(suiteall)
import unittest


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

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

    # 测试方法之前执行
    def setUp(self) -> None:
        print("setup")

    # 测试方法之后执行(ps:资源回收,断开数据库连接等)
    def tearDown(self) -> None:
        print("tearDown")

    def test_cast01(self):
        print("testcast01")
        self.assertEqual(1, 1, "不相等!")
        self.assertIn("oh", "oh this", "不包含!")

    def test_cast02(self):
        print("testcast02")
        self.assertEqual(1, 1, "不相等!")
        self.assertIn("oh", "oh this", "不包含!")

    # 跳过测试执行
    @unittest.skip
    def test_cast03(self):
        print("testcast03")
        self.assertEqual(1, 2, "不相等!")
        self.assertIn("oh", "oh this", "不包含!")

    @unittest.skipIf(1 + 1 == 2, "跳过条件")  # 满足条件后跳过执行
    def test_cast04(self):
        print("testcast04")
        self.assertEqual(1, 2, "不相等!")
        self.assertIn("oh", "oh this", "不包含!")


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

    def test_demo1_cast02(self):
        print("test_demo1_cast02")


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

    def test_demo2_cast02(self):
        print("test_demo2_cast02")


if __name__ == '__main__':
    suite = unittest.TestLoader().loadTestsFromTestCase(demo2)
    suite1 = unittest.TestLoader().loadTestsFromTestCase(demo1)
    suiteall = unittest.TestSuite([suite, suite1])
    unittest.TextTestRunner().run(suiteall)

四:路径执行:
 

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


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

    def test_demo1_cast02(self):
        print("test_demo1_cast02")


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

    def test_demo2_cast02(self):
        print("test_demo2_cast02")


class demo3(unittest.TestCase):
    def test_demo3_cast01(self):
        print("test_demo3_cast01")

    def test_demo3_cast02(self):
        print("test_demo3_cast02")


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

执行结果:

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值