Python+requests+allure实现接口功能自动化
从12月开始一直在忙着做公司旧自动化框架的改造
原来的框架使用Unittest+htmlrunner来作为测试框架,并且部分测试用例没有使用数据驱动封装,有部分又是使用了数据驱动【excel来进行用例管理】
和领导沟通后,这2个月与另外一位同事投了一半的时间来进行框架的重构及用例的改造
目录树及用途大致如下:
由于原框架中,部分接口已封装好,直接复用,除了部分新增接口有增加,并对原接口地址等做了参数化,可通过修改ini文件,即可修改接口地址路径
在测试用例管理中,使用的是yml文件来进行管理的,每条用例的名称、id、检查项、使用到的数据库表等结果,均在yml文件中进行了定义
module_name 用来表示用例属于哪个功能模块
module_case_name来用作allure生成报告时展示用例的名称
isxxxxxxx 用来判断用例执行中是否需要进行相关操作,比如:初始化表,检查执行语句的返回内容,行首,sql语句是否执行成功等
CheckType 根据不同的checktype来走不同的响应结果断言逻辑,比如时间相关的,就设置为“TIME”等
sqltype 根据不同的type设置,执行对应的初始化和语法
tb_name 用例执行过程中使用到的表,会根据isInitialized和tb_name名字来判断是复用emp表还是创建新的空表
exec_order exec_sql 分别为sql执行的顺序和sql语句的内容,sql的内容中使用字符串格式化来填写,{}中为tb_name1和tb_name2变量取到的值,在代码中使用eval函数来实现参数的传递
最后就是expected_result根据isCheckxxx的填写,来填写对应用例的预期结果
在conftest.py文件中,还添加了一些通用的代码,比如收集测试用例名使用中文不出现乱码,使用fixture在每条用例执行前进行登录检查
在pytest.ini配置文件中,可以手动添加mark标记,针对该版本需要测试的1个或几个功能模块用例进行单独或批量的执行
addopts可以配置默认执行添加的参数,以便在命令行终端只敲入pytest即可自动带入addopts中已配置的参数
norecursedirs可以配置收集用例时排除的文件夹
最后为用例执行后生成的报告图例,可以在右侧查看预期结果与返回结果哪里不一致,以及执行的sql语句及接口返回的响应数据
下面参数中可看到该条用例使用到的变量值,以及下面测试步骤中可看到是哪一步断言失败