UnitTest自动化测试框架

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
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值