UnitTest框架和PyTest框架
UnitTest框架的个人学习笔记。
测试用例的管理一般基于UnitTest和PyTest来进行管理
-
UnitTest
是目前应用非常广泛的测试框架,最初用来进行单元测试。随着自动化测试的发展,到现在成为自动化测试技术的主流应用,尤其是接口自动化。
UnitTest中封装有非常多的内容,且可以和其他模块进行组合。在用例管理上和代码管理上会有更加大的便利。
UnitTest的四大特色
1.测试用例的管理 2.测试套件和运行器,能够更有效地针对业务进行用例管理,包括测试报告的集成 3.Setup和Teardown,前置与后置条件。前置条件是在执行用例之前首先进行的操作,后置条件是在执行测试用例之后进行的操作。 例如,一次测试中,所有测试用例的执行都需要前置的一些测试用例(如登录等操作),那么就可以把这些前置的测试用例作为前置条件,即进行核心业务测试之前的准备。将这些可以放置在Setup中。而如果每条测试用例测试之后都需要做某项操作(如关闭浏览器)则可以把这些后置操作放在Teardown中。 4.断言机制,程序员只需要通过self.即可直接调用assert(16种左右)
UnitTest框架的应用
1.UnitTest是一个测试用例框架,还需要外部框架,一个自动测试框架不是只有UnitTest或者PyTest框架 2.Python安装时,默认会有builtin模块,UnitTest默认集成在python中,没必要额外下载UnitTest 3.只需要通过import unittest即可调用。调用后只需要在你的测试类class中继承unittest.TestCase即可。 import unittest class Test001(unittest.TestCase): def test_testname1(self): pass def test_testname2(self): pass . . . def test_testnameN(self): pass if __name__=='__main__': unittest.main() 4.在UnitTest中有默认的用例加载顺序:0-9→A-Z→a-z(ASKII码的顺序) 5.在类中创建普通函数,可以再执行测试用例中调用。用于封装逻辑代码,以便于在测试用例中进行调用 6.所有的前置后置都有等级存在:class级别,method级别 method级别前置后置:用例运行前会执行前置,运行后会执行后置。所有前置后置有且只有一个。 def setUp(self) -> None: pass def tearDown(self) -> None: pass class级别,必须定义装饰器@classmethod:前置在所有内容运行前运行一次,后置是所有内容运行结束后运行一次 @classmethod def setUpClass(cls) -> None: pass @classmethod def tearDownClass(cls) -> None: pass 比如说所有的配置,可以在setUpClass中运行 setUp和tearDown都可以两种同时存在。 7.修改cls参数值,想要在全局生效的话需要用类名.变量名。self.变量名修改只能在当前函数中生效。
import unittest class UnitTestPrec(unittest.TestCase): { def setUpClass(cls): cls.driver = webdriver.Chrome() cls.title = None def test_001(self): self.title = self.driver.title print(self.title) def test_002(self): print(self.title) def test_003(self): UnitTestPrec.title = self.driver.title print(UnitTestPrec.title) def test_004(self): print(self.title) } if __name__ == '__main__': unittest.main()
设test_001获取的网页title为title_001,以此类推,则函数的输出结果应为
title_001 None title_003 title_003