python_unnitest测试框架

python_unnitest测试框架,第1张

概述Uniitest是python内置的标准类库,它的API和java的junit很相似。---单元测试(pytest是python第三方的测试框架,更灵活)unnitest单元测试讲解:单元测试方法:1)语句覆盖  设计的用例执行完我们所有的代码语句  比较薄弱(如:and条件语句,如果写成了or,测试的例子该条语句也能通过,测试就

Uniitest是python内置的标准类库,它的API和java的junit很相似。---单元测试(pytest是python第三方的测试框架,更灵活)

unnitest单元测试讲解:

单元测试方法:

1)语句覆盖   设计的用例执行完我们所有的代码语句   比较薄弱(如:and条件语句,如果写成了or,测试的例子该条语句也能通过,测试就发现不了该问题)

2)判断覆盖   关注整个判断语句(true or false),不关心判断语句内是否有多个条件(也会有漏洞)

3)条件覆盖  关注整个判断语句的同时也关注每个语句里面的条件(测试用例庞大)

4)路径覆盖  通过流程图去保证每条路径都覆盖到

#单元测试框架import unittestclass myunitest(unittest.TestCase):    @classmethod    def setUpClass(cls) -> None:        print("1111")    @classmethod    def tearDownClass(cls) -> None:        print("22222")    def setUp(self) -> None:        print("开始前准备")    def tearDown(self) -> None:        print("结束后 *** 作")    def test_01(self):        print("这是case1")        r=2        self.assertEqual(2,r,"判断相等")    def test_02(self):        print("这是case2")    def main(self):        unittest.main

setupclass和teardown作用域是整个类,先执行setup,再执行所有用例,最后执行teardown

setup和teardown作用域是单挑case,先执行setup,然后执行case01,再执行teardown。然后重复再执行setup,执行case02,再执行teardown...

 

如何设置跳过某条用例(方法1):在那条用例上面加@unnitest.skip,代码示例:

#单元测试框架import unittestclass myunitest(unittest.TestCase):    @classmethod    def setUpClass(cls) -> None:        print("第一次开始前准备")    @classmethod    def tearDownClass(cls) -> None:        print("第一次结束后 *** 作")    @unittest.skipIf(1+1==2,"case0跳过")    def test_01(self):        print("这是case1")        r=2        self.assertEqual(2,r,"判断相等")    def test_02(self):        print("这是case2")    def main(self):        unittest.main

如何设置跳过某条用例(方法2):创建测试套件,将要执行的用例放到测试套件中,然后去调用unnitest.TextTestrunner去run测试套件:

#单元测试框架import unittestclass myunitest(unittest.TestCase):    @classmethod    def setUpClass(cls) -> None:        print("第一次开始前准备")    @classmethod    def tearDownClass(cls) -> None:        print("第一次结束后 *** 作")    def test_01(self):        print("这是case1")        r=2        self.assertEqual(2,r,"判断相等")    def test_02(self):        print("这是case2")class my2(unittest.TestCase):    @classmethod    def setUpClass(cls) -> None:        print("第二次开始前准备")    @classmethod    def tearDownClass(cls) -> None:        print("第二次结束后 *** 作")    def test_03(self):        print("这是case03")if __name__ == '__main__':    suite=unittest.TestSuite()    suite.addTest(myunitest("test_01"))    suite.addTest(my2("test_03"))    unittest.TextTestRunner().run(suite)

如何设置跳过某条用例(方法3):选择指定类中的用例执行(将要执行的类中的用例加载出来,放到测试套件中,再去run这些用例)。代码示例:

#单元测试框架import unittest#测试用例(类1)class myunitest(unittest.TestCase):    @classmethod    def setUpClass(cls) -> None:        print("第一次开始前准备")    @classmethod    def tearDownClass(cls) -> None:        print("第一次结束后 *** 作")    def test_01(self):        print("这是case1")        r=2        self.assertEqual(2,r,"判断相等")    def test_02(self):        print("这是case2")#测试用例(类2)class my2(unittest.TestCase):    @classmethod    def setUpClass(cls) -> None:        print("第二次开始前准备")    @classmethod    def tearDownClass(cls) -> None:        print("第二次结束后 *** 作")    def test_03(self):        print("这是case03")#测试用例(类3)class my3(unittest.TestCase):    @classmethod    def setUpClass(cls) -> None:        print("第三次开始前准备")    @classmethod    def tearDownClass(cls) -> None:        print("第三次结束后 *** 作")    def test_04(self):        print("这是case4")if __name__ == '__main__':    suite1=unittest.TestLoader().loadTestsFromTestCase(myunitest)    suite2=unittest.TestLoader().loadTestsFromTestCase(my3)    suiteall=unittest.TestSuite([suite1,suite2])    unittest.TextTestRunner().run(suiteall)

pytest还可以以加载路径下用例的方式,去执行想要执行的用例(使用unnitest.defaultTestLoader.discover(test_dir,patter="文件关键字")。代码示例如下:

#单元测试框架import unittestimport osclass myunitest(unittest.TestCase):    @classmethod    def setUpClass(cls) -> None:        print("第一次开始前准备")    @classmethod    def tearDownClass(cls) -> None:        print("第一次结束后 *** 作")    def test_01(self):        print("这是case1")        r=2        self.assertEqual(2,r,"判断相等")    def test_02(self):        print("这是case2")class my2(unittest.TestCase):    @classmethod    def setUpClass(cls) -> None:        print("第二次开始前准备")    @classmethod    def tearDownClass(cls) -> None:        print("第二次结束后 *** 作")    def test_03(self):        print("这是case03")class my3(unittest.TestCase):    @classmethod    def setUpClass(cls) -> None:        print("第三次开始前准备")    @classmethod    def tearDownClass(cls) -> None:        print("第三次结束后 *** 作")    def test_04(self):        print("这是case4")if __name__ == '__main__':    print(os.path)    discover=unittest.defaultTestLoader.discover("./","test_*.py")    unittest.TextTestRunner().run(discover)

 

总结

以上是内存溢出为你收集整理的python_unnitest测试框架全部内容,希望文章能够帮你解决python_unnitest测试框架所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1188745.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存