1)选取自动化测试用例
2)搭建自动化测试环境
pip3 install requests
pip3 show requests
3)搭建自动化测试框架
4)代码实现自动化
5)输出测试报告
6)实现持续集成
接口自动化框架就是基于应用服务器和数据库进行case管理,具体包含API封装、数据库封装、测试数据参数化和代码优化断言封装等
pip install requests
1)requests处理json类型
requests.请求方法(url, params=None, data=None, json=None, headers=None)
2)requests处理multipart/form-data类型
requests.请求方法(url, data=None, json=None, headers=None, files=None)
属性/方法 | 说明 |
---|---|
response.status_code | 状态码 |
response.json() | json形式的响应内容 |
response.text | 文本形式的响应内容 |
response.url | 请求url |
response.encoding | 查看响应头部字符编码 |
response.headers | 头信息 |
response.cookies | cookies信息 |
# 需求:登录成功
# 导包
import requests
# 发送请求
url = "http://kdtx-test.itheima.net/api/login"
header_data = {
"Content-Type": "application/json"
}
login_data = {
"username": "admin",
"password": "HM_2023_test",
"code": 2,
"uuid": "26bdc08fac934d6b805e49645b2701ae"
}
response = requests.post(url=url, headers=header_data, json=login_data)
# 查看响应
print(response.status_code)
print(response.json())
1、接口自动化代码核心思想?
核心思想:代码分层思想
TestContractBusniess.token = res_l.json().get("token")
# 读取文件
f = open("test.pdf", "rb")
# 设置请求数据
response = requests.post(url=xxx, files={"file": f}
数据驱动:以测试数据驱动脚本执行,维护焦点从脚本转向测试数据的一种自动化测试设计模式
好处:代码与测试数据分离,增强代码的可维护性
pytest中parametrize装饰器
1)json文件记录测试数据
[
{
"username": "admin",
"password": "HM_2023_test",
"status": 200,
"message": "成功",
"code": 200
},
{
"username": "",
"password": "HM_2023_test",
"status": 200,
"message": "错误",
"code": 500
},
{
"username": "admin111",
"password": "HM_2023_test",
"status": 200,
"message": "错误",
"code": 500
}
]
2)封装读取json文件
# 读取json文件
def build_data(json_file):
# 定义一个空列表
test_data = []
# 打开json文件
with open(json_file, "r", encoding="utf-8") as f:
# 加载json文件数据
json_data = json.load(f)
# 循环遍历测试数据
for case_data in json_data:
# 转换数据格式[{}, {}, {}] ==> [(), (), ()]
username = case_data.get("username")
password = case_data.get("password")
status = case_data.get("status")
message = case_data.get("message")
code = case_data.get("code")
test_data.append((username, password, status, message, code))
# 返回处理后的测试数据
return test_data
3)测试用例方法中利用参数化取出测试数据
# 登录成功
@pytest.mark.parametrize("username, password, status, message, code", build_data(json_file=config.BASE_PATH + "/data/login.json"))
def test01_login_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")
用于维护项目相关的基本信息,如:URL、项目路径等
# 导包
import os
# 定义环境域名
BASE_URL = "http://kdtx-test.itheima.net"
# 统一文件路径
BASE_PATH = os.path.dirname(__file__)
print(BASE_PATH)
当测试用例代码中需要用到url或项目路径时,如:
self.url_verify = config.BASE_URL + "/api/captchaImage"
json_file=config.BASE_PATH + "/data/login.json"
使用步骤:
将pytest配置文件中的命令行参数加上如下代码
--alluredir report
编写好测试脚本后,在命令行行中运行pytest
[pytest]
addopts =-s --alluredir report
testpaths=./scripts
python_files = test*.py
python_classes = Test*
python_functions = test*
程序运行结束后,会在项目的report目录中生成一些json文件
安装:
1.https://github.com/allure-framework/allure2/releases 下载 allure
2.解压缩安装包到一个不包含中文路径的目录
3.将压缩包内的 bin 目录配置到 path 系统环境变量
4.右键我的电脑 - 属性 - 高级设置 - 环境变量 - 找到系统环境变量的path项 - 增加 allure到bin目录
5.在命令行中输入 allure--version
命令,能显示allure版本信息,即为成功
总结:
1)终端输入 pytest 运行
2)终端输入 allure serve report 命令 得到报告
一些问题:
①allure依赖于jdk环境,需要先安装jdk1.8.0并配置环境变量(按照csdn上的文章配置了半天都没用,最后是直接将bin文件的绝对路径添加到path环境变量中才成功)
②如果在pycharm终端输入allure serve report 报错提示“allure不是内部或外部命令”,可以直接使用allure路径+serve report,即D:\software\allure-2.30.0\bin\allure serve report