文章目录
- 前言
- 一、登录单接口自动化测试
- 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:针对响应结果进行断言
# 断言响应状态码为200 assert 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:针对响应结果进行断言
# 断言响应状态码为200 assert 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) # 断言响应状态码为200 assert status == response.status_code # 断言响应数据包含'成功' assert message in response.text # 断言响应json数据中code值 assert code == response.json().get("code")