Pytest Unittest详解与对比

unittest详解

import unittest

# 被测方法
class Search:
    def search_fun(self):
        print("search")
        return True

# 测试类1
class TestSearch1(unittest.TestCase):

    @classmethod
    def setUpClass(self) -> None:
        print("setUp======类级别")
        self.search = Search()
    @classmethod
    def tearDownClass(self) -> None:
        print("tearDown======类级别")

    def setUp(self) -> None:
        print("setUp======方法级别")
    def tearDown(self) -> None:
        print("tearDown======方法级别")

    def test_search1(self):
        print("testsearch1")
        assert True == self.search.search_fun()
    def test_search2(self):
        print("testsearch2")
        assert True == self.search.search_fun()
    def test_search3(self):
        print("testsearch3")
        assert True == self.search.search_fun()

    def test_equal(self):
        print("test_equal")
        self.assertEqual(1, 1, "判断 1==1")
    def test_notequal(self):
        print("test_notequal")
        self.assertNotEqual(1, 2, "判断 1!=2")
        # self.assertTrue(1==1,"判断1==1")
# 测试类2   
class TestSearch2(unittest.TestCase):
    def test_case1(self):
        print("test_case1")

if __name__ == '__main__':
    # 方法一:执行当前文件所有的unittest测试用例
    # unittest.main()

    # 方法二:创建测试套件,只执行套件中的测试方法
    # suite = unittest.TestSuite()
    # suite.addTest(TestSearch1("test_search1"))
    # suite.addTest(TestSearch1("test_search2"))
    # unittest.TextTestRunner().run(suite)

    #方法三:执行某个测试类
    suite1 = unittest.TestLoader().loadTestsFromTestCase(TestSearch1)
    suite2 = unittest.TestLoader().loadTestsFromTestCase(TestSearch2)
    suite = unittest.TestSuite([suite1,suite2])
    unittest.TextTestRunner().run(suite)

    #方法四:执行某个文件夹中的测试方法
    # testcase_path = "./testcase"
    # discover = unittest.defaultTestLoader.discover(testcase_path,pattern="test_*.py")
    # unittest.TextTestRunner().run(discover)

    #方法五:生成报告
    #github:https://github.com/huilansame/HTMLTestRunner_PY3
    from HTMLTestRunner_PY3 import HTMLTestRunner

    report_title = "用例执行测试报告"
    desc = "用于展示测试后的测试结果数据"
    report_file = "./report.html" #可以用时间来命名报告
    testcase_path = "./testcase"
    discover = unittest.defaultTestLoader.discover(testcase_path,pattern="test_*.py")
    with open(report_file, "wb") as report:
        runner = HTMLTestRunner(stream=report, title=report_title, description=desc)
        runner.run(discover)

pytest详解

Python单元测试框架pytest - 韩凯1990 - 博客园 (cnblogs.com)

pytest与unittest对比图

 

posted @ 2021-06-10 17:35  韩凯1202  阅读(72)  评论(0编辑  收藏  举报