做一件事情之前,最重要是整个项目有一个清晰的框架内容。然后分步分类去实现对应的内容。
参考网址:https://www.cnblogs.com/wendyw/p/11678920.html
https://docs.python.org/zh-cn/3/library/unittest.html
1.什么是自动化测试框架
- 自动化测试框架,首先需要了解什么是框架,查了很多资料,最终整理成自己的理解。
- 框架:一个基础架构,好比你修房子,首先需要有蓝图,根据这个蓝图去先把你的架子搭建起来,这就是框架。
- 自动化测试框架:最根本的是要构造一个良好的工作空间,能够容纳各种类型测试工具的执行,以使这些工具能够相互兼容,共享测试数据。
- 自动化测试平台架构图
参考网址,什么是框架:https://developer.aliyun.com/article/135409
2.自动化测试框架
自动化测试框架:https://segmentfault.com/a/1190000022693251
自动化测试的使用场景
1.需求文档、不会频繁变更的场景。
2.研发和维护周期长,需要频繁执行回归测试的场景。
3.需要在多种平台上重复运行相同测试的场景。
3.什么是unittest
单元测试:软件中最小可测试单元在程序其他部分相隔离情况下进行检查和验证的工作。对于测试,就是执行测试用例,输入测试数据->输出测试结果。
unittest:一个单元测试框架。python自带的单元测试框架,主要适用于单元测试,可以对多个测试用例进行管理和封装。它本身提供类和方法来处理各种测试工作。
参考网址,单元测试框架-unittest:https://www.cnblogs.com/miki-peng/p/12501341.html
4.unittest有什么
unittest主要有4个核心概念。
unittest 测试框架实例详解:https://www.cnblogs.com/miki-peng/p/12501341.html
4.1 unittest四个核心概念
UniteTest框架-四个核心概念:测试用例(Test Case)、测试固件(Test Fixture)、测试套件(Test Suite)、执行器(Test Runner)。
1.test-case-测试用例
test-case编写测试用例步骤
1.导入unittest模块
2.创建一个测试类,并继承unittest.TestCase()
3.定义测试方法,方法名必须以test_开头
4.调用unittest.main()方法来运行测试用例,该方法会默认搜索该模块下所有以test开头的测试用例方法,自动执行
2.testfixture-测试夹具
1.测试方法:setup()和teardown()
2.测试类:setUpClass()和setDownClass()
3.test suiter-测试套件
批量执行测试用例
1.unittest.TestSuite()
addTest(类名('方法名')):添加单个测试用例方法
addTests([类名('方法名1'),类名('方法名2'),….]): 添加多个测试用例方法,方法名存在一个列表
2.unittest.TestLoader()
loadTestsFromTestCase(测试类名):添加一个测试类
loadTestsFromModule(模块名):添加一个模块
discover(测试用例的所在目录):指定目录去加载,会自动寻找这个目录下所有符合命名规则的测试用例
4.test runner-执行用例
执行测试用例,并且可以生成相应的测试报告(text文本或html格式)。
4.2 testcase-测试用例注意事项
testcase-测试用例注意事项:
- 测试用例必须在类中
- 测试用例所在的类,继承TestCase
- 测试用例的执行顺序,按照AsicII码顺序(0-9,A-Z,a-z)
- 测试用例的方法必须以test开头
- 利用父类TestCase的assertXXX来进行断言
- 用@unittest.skip(reason)装饰来跳过测试用例
4.3 testfixture-测试固件注意事项
测试方法和测试类的使用:setup()和teardown() 、setupclass()和teardownclass()。
testfixture-测试固件注意事项:
- testfixture,也叫测试夹具,主要工作用于:初始化和善后
- 分两种,一种是类级别的,一种是方法级别的
- 类级别的,所有测试用例执行之前与之后运行一次
- 方法级别的,每个测试用例执行之前与之后都执行一次
4.4 testsuite-测试套件注意事项
testsuite套件-用来组织测试用例的。可以通过3种方法进行用例组织。
- 方法一
suite=unittest.TestSuite()
suite.addTest(类名("方法名1"))
suite.addTest(类名("方法名2"))
suite.addTest(类名("方法名3")) - 方法二
suite=unittest.TestSuite()
list=[类名1("方法名1"),类名1("方法名2"),类名2("方法名2"),类名3("方法名3")]
suite.addTests(list) - 方法三
unittest.defaultTestLoader.discover('用例所在的模块',pattern="通配.py")
discover(start_dir,pattern='test*.py',top_level_dir=None)详解
- start_dir:待执行用例目录
- parttern:匹配脚本名称的规则,test*.py意思是匹配test开头的所有脚本
- top_level_dir:顶层目录的名称,默认是None
4.5 testrunner-测试运行器注意事项
testrunner运行器是用来执行测试用例的。
runner=unittest.TextTestRunner()#实例化TestRunner类
runner.run(suite) #执行测试用例