文章目录
- 前言
- 一、登录单接口自动化测试
- 1.1 登录单接口文档信息
- 1.2 登录成功
- 1.3 登录失败(用户名为空)
- 二、数据驱动的实现
- 2.1 json文件实现数据驱动
- 总结
前言
一、登录单接口自动化测试
1.1 登录单接口文档信息
需求:
- 完成测试脚本的业务实现
- 针对响应结果进行断言
1.2 登录成功
登录成功接口文档信息:
登录成功测试脚本层编写:
实现步骤:
步骤1:导包、创建测试类、前置,后置处理
# 导包 from api.login import LoginAPI# 创建测试类 class TestLoginAPI:# 初始化uuid = None# 前置处理def setup(self):# 实例化接口类self.login_api = LoginAPI()# 获取验证码response = self.login_api.get_verify_code()print(response.json())# 提取验证码接口返回的uuid参数值TestLoginAPI.uuid = response.json().get("uuid")print(TestLoginAPI.uuid)# 后置处理def teardown(self):pass
前置处理是处理获取验证码的uuid信息,用于登录接口使用。
步骤2:创建登录成功方法,并实现获取验证码和登录操作
# 登录成功def test01_success(self):login_data = {"username": "manager","password": "123456","code": "2","uuid": TestLoginAPI.uuid}response = self.login_api.login(test_data=login_data)
步骤3:针对响应结果进行断言
# 断言响应状态码为200assert 200 == response.status_code# 断言响应数据包含'成功'assert '成功' in response.text# 断言响应json数据中code值assert 200 == response.json().get("code")
断言依据:
1.3 登录失败(用户名为空)
登录失败(用户名为空)文档信息:
登录成功测试脚本层编写:
实现步骤:
步骤1:导包、创建测试类、前置,后置处理(和登录成功一样的)
# 导包 from api.login import LoginAPI# 创建测试类 class TestLoginAPI:# 初始化uuid = None# 前置处理def setup(self):# 实例化接口类self.login_api = LoginAPI()# 获取验证码response = self.login_api.get_verify_code()print(response.json())# 提取验证码接口返回的uuid参数值TestLoginAPI.uuid = response.json().get("uuid")print(TestLoginAPI.uuid)# 后置处理def teardown(self):pass
前置处理是处理获取验证码的uuid信息,用于登录接口使用。
步骤2:创建登录失败(用户名为空)方法
# 登录失败(用户名为空)def test02_without_username(self):login_data = {"username": "",//此处用户名设置为空"password": "123456","code": "2","uuid": TestLoginAPI.uuid}response = self.login_api.login(test_data=login_data)
步骤3:针对响应结果进行断言
# 断言响应状态码为200assert 200 == response.status_code# 断言响应数据包含'错误'assert '错误' in response.text# 断言响应json数据中code值assert 500 == response.json().get("code")
断言依据:
二、数据驱动的实现
1.什么是数据驱动?维护焦点:测试数据数据驱动:以测试数据驱动脚本执行,维护焦点从脚本转向测试数据的一种自动化 测试设计模式。图示说明:维护测试数据:
2.如何实现数据驱动?
图示说明:
pytest中parametrize装饰器(1)作用:遍历所有测试数据并运行测试方法。(2) 语法:@pytest.mark.parametrize ( ②保存数据参数名, ①测试数据 )def test_method(self, ③参数名 )pass示例:test_data = [( "manager", "123456" ), ("", "123456"), ("itheima", "123456")]@pytest.mark.parametrize(" mobile, passwd ", test_data )def test_login(self, mobile, passwd )pass对应上面语法。
针对登录接口实现步骤:
需求:针对登录接口,将请求数据和断言数据组织成JSON文件,完成自动化测试。步骤1:准备测试数据# 测试数据①测试数据test_data = [("manager", "123456", 200, '成功', 200),("", "123456", 200, '错误', 500),("jack666", "123456", 200, '错误', 500),]
步骤2:所以pytest中parametrize装饰器
#登录单接口实现 @pytest.mark.parametrize(②保存数据参数名"username, password, status, message, code" ,①测试数据test_data)def test01_success(self, ③参数名username, password, status, message, code):login_data = {"username": username,"password": password,"code": "2","uuid": TestLoginAPI.uuid}response = self.login_api.login(test_data=login_data)# 断言响应状态码为200assert status == response.status_code# 断言响应数据包含'成功'assert message in response.text# 断言响应json数据中code值assert code == response.json().get("code")