# auto_test-interface-keyword_driven **Repository Path**: dianetian/auto_test-interface-keyword_driven ## Basic Information - **Project Name**: auto_test-interface-keyword_driven - **Description**: 通过关键字驱动实现接口自动化测试 - **Primary Language**: Python - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 0 - **Created**: 2020-12-29 - **Last Updated**: 2022-06-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # auto_test-interface-keyword_driven ### 介绍 Web后端的接口自动化测试,主要用于冒烟测试和回归测试; 帮助测试人员对提测版本进行质量把关,将测试精力放在新功能验证,提高测试效率,尽早地发现软件缺陷; 主要验证点包括返回码、参数完整性、结构完整性、特殊参数值的验证,从多方面测试验证每个测试用例的正确性; ### 软件架构 Python + Requests + Pytest + Allure ### 安装教程 1. 安装Python 3.7.0环境,具体操作可参考网络 2. 切换到项目主目录,并执行如下命令,安装本项目所依赖的第三方库 ```commandline python3 -m pip install -r requirements.txt --user ``` ### 使用说明 1. 编写测试用例 使用data/excel/test_case.xlsx文档编写和维护测试用例,在执行测试前,将数据导入数据库表中,测试执行时从数据库中读取测试用例并写入测试结果; ![测试用例和数据编写部分截图](https://images.gitee.com/uploads/images/2021/0117/182057_832d7b34_2018203.png "excel.png") 2. 修改配置 切换到项目主目录,修改config/conf.ini配置文件,指定web界面访问、数据库连接等相关信息; ```commandline vim config/conf.ini ``` 3. 数据导入 3.1 创建数据库表结构 该库表存放测试用例相关数据; ```commandline cd data/initialize/ mysql -uroot -p -h[测试机IP地址] < interface_case-keyword_driven.sql ``` 3.2 将测试用例导入库表 将excel中的测试用例导入到数据库表,根据提示,导入指定测试用例; ```commandline cd common/ python3 data_transfer.py # 输入 ["interface_case"],并回车 ``` 4. 启动Web应用程序 在测试机上部署被测对象,即启动nginx进程和Web java进程; ```commandline sh startWeb.sh ``` 5. 运行接口自动化测试 切换到本项目主目录,执行如下命令,启动并执行接口测试; ```commandline python3 main.py ``` 6. 查看测试结果 执行结束后,浏览器打开report/index.html,查看本次测试结果详情; ![测试结果部分截图](https://images.gitee.com/uploads/images/2021/0112/200343_8b4edd66_2018203.png "allure测试报告.png") ### 亮点 1. 架构比较清晰,使用者可根据实际待测项目编写测试用例、修改相关配置,即可应用到不同的测试项目中; 2. 通过关键字驱动实现接口自动化测试,使得新增测试用例时更加简单,方便不懂代码的测试人员轻松地参与进来; 3. 对每个接口请求进行封装,将业务处理相关代码从测试模块转移到对应接口模块中,实现业务与测试隔离; 4. 单接口测试和多接口测试使用同一个测试脚本实现自动化执行,其中,多接口测试通过"单例模型"对象的存储同一个测试用例的待传递参数及参数值; ### 关键字驱动的优势(相较于数据驱动) - 注:这里只说明在代码实现中的实际感受,不涉及理论上各自的优缺点; 1. 编写测试用例更简单 —— 关键字驱动只需指定接口对应的关键字,而数据驱动需指定接口url, method, headers; ![数据库interface_case部分截图](https://images.gitee.com/uploads/images/2021/0117/180900_49e62f72_2018203.png "关键字.png") 2. 日常维护接口更方便 —— 当一个接口发生变动时,关键字驱动只需修改interface包中指定的接口模块,而数据驱动需修改包含该接口的所有测试用例; 3. 测试脚本更独立 —— 关键字驱动的测试脚本不再参杂对特定接口的预处理,如登录接口的密码加密等,而是尽量将与测试步骤无关的业务逻辑交给接口包或业务包; ### 待改进 1. ~~将数据库操作从响应结果比较模块"common.result_compare"抽离出来,实现每个模块实现各自功能;~~ (完成)