接口自动化测试框架(用例自动生成) 项目说明
本框架是一套基于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.
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后面的语句都会被执行。