什么是接口自动化测试:使用工具或代码代替人对接口进行测试
测试项目结构(python包)
1、接口api包 2、script:业务脚本 3、data:数据 4、config.py :配置文件 5、reporter:报告
错误问题:
1、未打印任何东西。添加pip install pytest
2、setup,teardown的问题
关于pytest使用setUp/tearDown提示错误: AttributeError: ‘TestLogin‘ object has no attribute ‘login_api‘_attributeerror: 'testlogin' object has no attribut-CSDN博客
3、合同新增业务
- 封装接口类
- 获取验证码接口
- 获取验证码中的uuid,传递给data
- 登录接口(登录接口类的实现,实例化对象,调用登录接口类实现用户登录,(!!data参数中关于uuid的部分)
- 实现课程添加接口对象的封装和调用(如何实现课程添加接口对登录接口的依赖)
- 上传合同(上传合同接口的实现,实例化对象,调用实现合同上传(!!:文件如何上传))
- 新增合同(新增合同接口的实现,实例化对象,调用接口实现合同新增)
4、登录单接口实现
- pytest的使用,setup(前置),teardown(后置)
- pytest与unitest的对比Python 自动化测试框架unittest与pytest的区别_python pytest unittest 区别-CSDN博客
- setup:登录接口实例化,验证码的获取,json数据中uuid的获取
- 断言方法的掌握
assert 200 == response.status_code
assert "错误" in response.text
assert 500 == response.json().get('code')
- 错误调试
response = self.loginapi.post_login(test_data)
- 测试数据参数化:导包,准备数据文件,在测试方法上面引用数据文件
import pytest
test_data =[
('admin', 'HM_2023_test', 200, '成功', 200),
(" ", '123456',200,"失败", 500),
("jack666","123456",200,'错误',500),
]
@pytest.mark.parametrize("username,password,status,message,code",test_data)
def test01_login_success(self,username,password,status,message,code):
test_data = {
"username": username,
"password": password,
"code": "2",
# 获得uuid的方法
"uuid":TestLoginAPI.uuid
}
response = self.loginapi.post_login(test_data)
assert status == response.status_code
assert message in response.text
assert code ==response.json().get('code')
- 数据驱动:以测试数据驱动脚本执行,维护焦点从脚本转向测试数据文件。导包import json->读取json文件,并保存为元组->测试数据驱动脚本执行
使用allure生成在线报告:
安装:
1.https://github.com/allure-framework/allure2/releases 下载 allure
2.解压缩安装包到一个不包含中文路径的目录
3.将压缩包内的 bin 目录配置到 path 系统环境变量
4.右键我的电脑-属性-高级设置-环境变量-找到系统环境变量的path项-增加 allure到bin目录
5.在命令行中输入 allure -version 命令,能显示allure版本信息,即为成功
6.在终端执行:pipinstall allure-pytest
7.在pycharm中下方控制台输入:1.pytest;2.运行allure命令生成测试报告 pytest allure serve report