pytest+requests+Python3.7+yaml+Allure+Jenkins+docker实现接口自动化测试

接口自动化测试框架(用例自动生成) 项目说明

本框架是一套基于pytest+requests+Python3.7+yaml+Allure+Jenkins+docker而设计的数据驱动接口自动化测试框架,pytest 作为执行器,本框架无需你使用代码编写用例,那你可能会担心万一有接口之间相互依赖,或者说需要登入的token等之类的接口,该如何编写用例呢,在这里告诉你们本框架已经完美解决此问题,所有的一切将在yaml中进行!!本框架实现了在yaml中进行接口用例编写,接口依赖关联,接口断言(支持正则校验、json校验、全等校验、数据库校验等,支持组合多种不同的校验类型来验证),自定义测试用例运行顺序,还有很重要的一点,实现了类jmeter函数助手的功能,譬如生成MD5、SHA1、随机定长字符串、时间戳等,只需要你在yaml中使用特殊的写法$Function(arg)$,就能够使用这些函数啦,此外在测试执行过程中,还可以 对失败用例进行多次重试,其重试次数和重试时间间隔可自定义;而且可以根据实际需要扩展接口协议,目前已支持http接口和webservice接口

技术栈

requests

suds-py3

Allure

pytest

pytest-html

yaml

logging

Jenkins

docker

函数助手

环境部署

命令行窗口执行pip install -r requirements.txt 安装工程所依赖的库文件

解压allure-commandline-2.12.1.zip到任意目录中

打开\allure-2.12.1\bin文件夹,会看到allure.bat文件,将此路径添加到系统环境变量path下,这样cmd任意目录都能执行了

在cmd下执行 allure --version ,返回版本信息,allure即安装成功

进入 \Lib\site-packages\allure 下面的utils文件,修改成以下代码:

for suitable_name in suitable_names: # markers.append(item.get_marker(suitable_name)) markers.append(item.get_closest_marker(suitable_name))

目的是解决pytest运行产生的以下错误:
_pytest.warning_types.RemovedInPytest4Warning: MarkInfo objects are deprecated as they contain merged marks which are hard to deal with correctly.

框架流程图与目录结构图及相关说明 1、框架流程图如下

pytest+requests+Python3.7+yaml+Allure+Jenkins+docker实现接口自动化测试

2、代码目录结构图如下

pytest+requests+Python3.7+yaml+Allure+Jenkins+docker实现接口自动化测试

目录结构说明

config ===========> 配置文件

common ===========> 公共方法封装,工具类等

pytest.ini ==========> pytest的主配置文件,可以改变pytest的默认行为,如运行方式,默认执行用例路径,用例收集规则,定义标记等

log ==========> 日志文件

report ==========> 测试报告

tests ===========> 待测试相关文件,比如测试用例和用例数据等

conftest.py ============> 存放测试执行的一些fixture配置,实现环境初始化、数据共享以及环境还原等

requirements.txt ============> 相关依赖包文件

Main.py =============> 测试用例总执行器

RunTest_windows.bat ============> 测试启动按钮

conftest.py配置说明

conftest.py文件名字是固定的,不可以做任何修改

不需要import导入conftest.py,pytest用例会自动识别该文件,若conftest.py文件放在根目录下,那么conftest.py作用于整个目录,全局调用

在不同的测试子目录也可以放conftest.py,其作用范围只在该层级以及以下目录生效

所有目录内的测试文件运行前都会先执行该目录下所包含的conftest.py文件

conftest.py文件不能被其他文件导入

conftest.py与fixture结合

conftest文件实际应用中需要结合fixture来使用,如下

conftest中fixture的scope参数为session时,那么整个测试在执行前会只执行一次该fixture

conftest中fixture的scope参数为module时,那么每一个测试文件执行前都会执行一次conftest文件中的fixture

conftest中fixture的scope参数为class时,那么每一个测试文件中的测试类执行前都会执行一次conftest文件中的fixture

conftest中fixture的scope参数为function时,那么所有文件的测试用例执行前都会执行一次conftest文件中的fixture

conftest应用场景

测试中需共用到的token

测试中需共用到的测试用例数据

测试中需共用到的配置信息

结合 yield 语句,进行运行前环境的初始化和运行结束后环境的清理工作,yield前面的语句相当于unitest中的setup动作,yield后面的语句相当于unitest中的teardown动作,不管测试结果如何,yield后面的语句都会被执行。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwjpgg.html