一文搞懂 Python 自动化测试框架
一文搞懂Python自动化测试框架
如果你选用python做自动化测试,那么python测试框架的相关知识你必须要了解下。
首先我们先学习一下框架的基本知识。
什么是框架(百度百科)?
框架( Framwork )是构成一类特定软件可复用设计的一组相互协作的类。框架规定了你的应用的体系结构。它定义了整体结构,类和对象的分割,各部分的主要责任,类和对象怎么协作,以及控制流程。框架预定义了这些设计参数,以便于应用设计者或实现者能集中精力于应用本身的特定细节。
什么是自动化测试框架?
自动化测试框架是一个工具脚本集合,用于组织和管理自动化基础功能(打开浏览器、鼠标点击、登录等)自动化测试用例、提供测试结果统计报告。
自动化测试框架能够提供可靠的测试服务,对于新需求能够快速扩展,能够让测试工程师简单高效的完成自动化测试任务。
测试框架的优点如下
-
代码复用 ,将基础的测试代码封装,从而降低代码的复杂性。
-
提高维护效率,有效组织和管理测试脚本。
-
快速实现项目的自动化测试,不用从0开始,一般测试框架完成后,其他类似程序也可以快速复用。
-
输出各种美观易懂的测试报告。
一个典型的自动化测试框架目录
-
config(配置文件目录):存放所有使用的配置文件,实现配置与代码分离。
-
common(公共函数):公共函数、方法以及通用操作的管理。
-
data(测试数据):将所有的用例参数化使用的文件放到这里,一般可采用xlsx、csv、xml等格式。实现数据与代码分离。
-
drivers(驱动目录):一般存放浏览器驱动,如如Chromedriver等。
-
logs(日志目录):日志记录和管理功能,存放运行时日志和错误日志error log等。
-
testcase(测试用例):测试用例管理功能,可以分模块编写,建相应的目录。
-
report(测试报告):管理和存放程序运行后生成的测试报告,一般可有html报告、excel报告等。
python主流测试框架
unittest
unittest框架是python内置的单元测试框架,unittest的设计灵感最初来源于Junit以及其他语言中具有共同特征的单元框架。它能编写组织用例、执行用例,还可输出测试报告等。
它具有如下优点:
-
使用断言判断返回布尔值来判断期望值和实际值的差异。
-
可以构建共同的初始化变量或实例。
-
框架结构可以组织用例批量运行。
为了实现这些,unittest产生了以下几个概念:
-
test fixture:一个test fixture 表示执行一个或多个测试前的准备工作,以及执行完成后清理工作。例如:创建临时或代理数据库或目录,或者是一个启动服务器进程。
-
test case:一个test case是一个独立的测试单元,它检查特定输入是否响应特定的输出,unittest提供了一个基本类——TestCase,这个类用于创建一个或多个test case。
-
test suite:一个test suite是test cases、或test suites、或者两者的一个集合,它用于把想执行tests放在一起。
-
test runner:一个test runner 是由两部分成分:合理安排tests的执行、提供给user输出结果。runner可以用一个图形界面、文本、或者是一个特殊的值,代表tests执行的结果。
官方文档:https://docs.python.org/3.6/library/unittest.html
代码示例:
pytest
很好的强大的单元测试框架,实际上广泛使用在自动化单元、接口、功能等测试。
如果你的项目比较小、复杂度比较低,Pytest是最适合的自动化测试平台。非常多的Python开发者都喜欢它,他们大部分用它来进行单元测试。
Pytest最好的特性之一是,它提供了测试用例的详细失败信息,使得开发者可以快速准确地改正问题。它兼容最新版本的Python。它还兼容unittest、doctest和nose,开箱即用。它还有包含更多功能的插件和多样化的现有测试技术和测试用例。
官方文档:https://pytest.org/en/latest/
脚本执行示例:
执行后的信息:
Robot Framework
Robot Framework- 通用的python测试框架,提供一个图形用户界面,方便管理和编辑测试用例,易于上手,生成的报告比较好看,支持关键字和数据等驱动。
Robot Framework是独立于操作系统和应用程序,支持跨平台,例如Windows、MacOS和Linux。这个产品是由世界上一些著名的测试人员创建的,拥有关键词驱动方案。它有丰富的工具和库,使得这个框架非常先进和健壮。
官方文档:http://robotframework.org。
示例:
推荐阅读
如果文章对您有帮助,欢迎点 在看 或者 转发 ,感谢!