Python中相对比较流行的自动化测试框架UnitTest、PyUnit,在Java中有个叫JUnit的测试框架,早期主要是用于做单元测试的,随着自动化测试的发展,到现在成为自动化测试技术的主流应用,原因是UnitTest中封装有非常多的内容,其能够完美结合Selenium、Appium、Request等实现UI自动化与接口自动化。
特点: [1] TestCase:测试用例,所有的用例都是直接继承于UnitTest.TestCase类 [2] TestFixture:SetUp和Teardown,作为前置条件(环境准备)和后置条件(环境恢复) [3] TestSuit:测试套件,能够更有效的针对业务来进行管理,包括测试报告的集成 [4] TestRunner:测试运行器 [5] 断言:在UnitTest中封装好了成熟断言,只需要通过“self.”即可直接调用
[★] 环境部署
[1] UnitTest是一个测试用例框架 [2] Python安装时默认会有一个buildtin模块,UnitTest框架是默认集成在Python中的。意味着只要安装了Python就有UnitTest [3] 只需要通过 `import UnitTest` 就可以使用
[★] unittest case的运行流程:
[1] 写好一个完整的TestCase [2] 多个TestCase由TestLoder被加载到TestSuite里面, TestSuite也可以嵌套TestSuite [3] 由TextTestRunner来执行TestSuite,测试的结果保存在TextTestResult中 [4] TestFixture指的是环境准备和恢复
[★] Test Fixture:用于测试环境的准备和恢复还原, 一般用到下面几个函数。
[1] setUp():准备环境,执行每个测试用例的前置条件 [2] tearDown():环境还原,执行每个测试用例的后置条件 [3] setUpClass():必须使用@classmethod装饰器,所有case执行的前置条件,只运行一次 [4] tearDownClass():必须使用@classmethod装饰器,所有case运行完后,只运行一次
[★] Test Case
[1] 参数verbosity可以控制错误报告的详细程度:默认为1。0表示不输出每一个用例的执行结果;2表示详细的执行报告结果。 [2] Verbosity=1情况下成功是 .,失败是 F,出错是 E,跳过是 S [3] 测试的执行跟方法的顺序没有关系, 默认按用例的加载顺序, 0-9, A-Z, a-z [4] 每个测试方法均以 test 开头 [5] Verbosity=2情况下会打印测试的注释
[★] Test Suite
一般通过addTest()或者addTests()向suite中添加。case的执行顺序与添加到Suite中的顺序是一致的 @unittest.skip()装饰器跳过某个case (1)skip():无条件跳过 @unittest.skip("i don't want to run this case. ") (2)skipIf(condition,reason):如果condition为true,则 skip @unittest.skipIf(condition,reason) (3)skipUnless(condition,reason):如果condition为False,则skip @unittest.skipUnless(condition,reason)
[★] Test Loder
[1] TestLoadder用来加载TestCase到TestSuite中。 [2] loadTestsFrom*()方法从各个地方寻找testcase,创建实例,然后addTestSuite,再返回一个TestSuite实例 [3] defaultTestLoader() 与 TestLoader()功能差不多,复用原有实例 unittest.TestLoader().loadTestsFromTestCase(testCaseClass) unittest.TestLoader().loadTestsFromModule(module) unittest.TestLoader().loadTestsFromName(name,module=None) unittest.TestLoader().loadTestsFromNames(names,module=None) unittest.TestLoader().discover()
[★] Testing Report
[★] 终端报告: 如上terminal 分支 [★] TXT报告: 如上txt 分支,当前目录会生成ut_log.txt文件 [★] HTML 报告:如上html 分支,终端上打印运行信息同时会在当前目录生成report文件夹, 文件夹下有test.html和test.log文件
[★] 框架特点
如何真正意义上应用UnitTest框架:必须在类名继承unittest.TestCase [1] 前置条件:setUp [2] 后置条件:tearDown [3] 测试用例:所有的测试用例,都是以函数的形式存在,函数的名称必须以test开头 [4] 运行测试用例:在main程序入口中使用unittest调用main()函数 [5] 用例加载顺序:UnitTest中有默认的用例加载顺序:0-9, A-Z, a-z [6] 普通函数:封装逻辑代码,以便在测试用例中进行调用 [7] 所有的前置和后置条件都有等级存在: class级别: [A] 必须定义装饰器“@classmethod” [B] setUpClass:前置是在所有测试用例运行前执行一次 [C] tearDownClass:后置是所以测试用例运行后执行一次 [D] 可应用于加载所有的配置 [E] cls对象只在class级别前后置条件中进行定义,而调用则还是通过self进行调用 [F] classmethod中定义的变量为全局变量,在测试用例中被赋值修改是临时性的,用例执行完毕后该变量仍为classmethod中定义初始值 [G] 修改cls对象的属性值,在全局生效,需要通过“类名.属性名”进行赋值 *** 作才可以生效,而通过“self.属性名”进行赋值只能够在当下函数(测试用例)中生效 method级别: [A] setUp:每一个用例执行前都会执行method级别的前置条件 [B] tearDown:每一个用例执行结束后都会执行method级别的后置条件
[★] UnitTest.skip用法
[★] UnitTest套件及Runner应用
[★] UnitTest+HTMLTestRunner自动化实现
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)