UnitTest框架详解

UnitTest框架详解,第1张

UnitTest框架详解

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自动化实现

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

原文地址: http://outofmemory.cn/zaji/5071732.html

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

发表评论

登录后才能评论

评论列表(0条)

保存