目录
前言
单个接口测试
登录功能
增添功能
修改功能
删除功能
查询功能
csv文件与自动化接口测试
编写测试用例
测试脚本代码
生成Allure测试报告
关于接口测试工具,想必大家都知道Postman吧。Postman是一款流行的接口测试软件,它里面主要包含了接口的Post、Get、Put、Delete请求方式以及各种断言,而这些都可以用python编写,而且可以根据自己项目去设置方法,灵活性要更高。如果是基础比较差的朋友可以先学习一下postman的使用,可能会帮助理解。
使用postman工具对项目的测试:关于智慧医疗管理平台的自动化接口测试-CSDN博客
所以本篇文章主要写了使用Pytest测试框架去编写接口的请求以及断言。
在进行测试前
1. 需要下载Pytest以及Requests包,这些可以直接在Pycharm中的“python软件包”中下载。

2. 下载测试项目资源
白月黑羽官网介绍:BYSMS系统 API 接口 1.0 - 白月黑羽 (byhy.net)
Gitee资源:智慧医疗药物管理平台: 一款关于医院中客户订单与药物订单的管理平台 (gitee.com)
资源下载好后,点击“runserver.bat”并一直保持运行状态点击白月SMS系统 | 登录即可登录。

class TestByhy(object):
def test_login(self):
host = "http://127.0.0.1"
path = "/api/mgr/signin"
data = {"username": "byhy",
"password": "88888888"
}
# Cookie需要根据自己浏览器所生成
headers = {"Cookie": "sessionid=fn2iry8uhpz36m417w3i7anurqkzxstk"
}
r = requests.post(url=host + path, data=data, headers=headers)
# 将返回信息转为JSON格式
response = r.json()
# 添加ret = 0 的断言
assert response["ret"] == 0
获取自己Cookie的方法:

class TestByhy(object):
def test_add(self):
host = "http://127.0.0.1"
path = "/api/mgr/customers"
data = {"action": "add_customer",
"data": {
"name": "柏林夏里特医学大学00",
"phonenumber": "14758530000",
"address": "德国00"
}
}
headers = {"Cookie": "sessionid=fn2iry8uhpz36m417w3i7anurqkzxstk"
}
# 需要将data转为json格式
r = requests.post(url=host + path, data=json.dumps(data), headers=headers)
response = r.json()
assert response["ret"] == 0
class TestByhy(object):
def test_update(self):
host = "http://127.0.0.1"
path = "/api/mgr/customers"
data =
}
headers = {"Cookie": "sessionid=fn2iry8uhpz36m417w3i7anurqkzxstk"
}
# 需要将data转为json格式
r = requests.put(url=host+path, data=json.dumps(data), headers=headers)
response = r.json()
assert response["ret"] == 0
class TestByhy(object):
def test_delete(self):
host = "http://127.0.0.1"
path = "/api/mgr/customers"
data = {"action": "del_customer",
"id": 130 # 要确保id号存在
}
headers = {"Cookie": "sessionid=fn2iry8uhpz36m417w3i7anurqkzxstk"
}
# 需要将data转为json格式
r = requests.delete(url=host + path, data=json.dumps(data), headers=headers)
response = r.json()
assert response["ret"] == 0
class TestByhy(object):
def test_select(self):
host = "http://127.0.0.1"
path = "/api/mgr/customers"
params = {"action": "list_customer",
"pagesize": 2, # 一页i个数据
"pagenum": 1, # 查看第j页
"keywords": ""
}
headers = {"Cookie": "sessionid=fn2iry8uhpz36m417w3i7anurqkzxstk"
}
# 查询功能需要params不需要data
r = requests.get(url=host + path, params=params, headers=headers)
response = r.json()
assert response["ret"] == 0
params与data的区别:
params是添加到url的请求字符串中的,用于get请求。 data是添加到请求体(body)中的, 用于post请求。
在进行自动化接口测试前,测试人员需要根据测试用例编写测试用例csv文件(如果上一个测试员把测试用例编写的很好,这一步就不用多了,但在对测试用例的提取需要用到正则表达式)
根据上一个测试文档编写可供计算机读取的测试用例。
上一个测试文档链接:智慧医疗管理平台测试用例-CSDN博客
测试用例链接:智慧医疗管理平台测试用例csv文件-CSDN博客

import os
import pytest
import requests
import csv
import json
# 将文档内的测试用例读取出来
def read_test_data():
test_data = []
with open('D:\A-Projects\Pytest\test_data.csv', encoding='utf-8-sig', newline='') as csvfile:
reader = csv.DictReader(csvfile)
for row in reader:
test_data.append(row)
return test_data
class TestWithCSV(object):
# 使用mark标记读取数据
@pytest.mark.parametrize("t_data", [row for row in read_test_data()])
def test_login(self, t_data):
# 记得根据自己电脑修改cookie的值(按F12刷新页面,点击网络即可看见请求的详细信息,将sessionid复制过来)
headers = {"Cookie": "sessionid=fxamt0irmk5a984rztygh64kuuofzwp6"
}
# 如果是登录的话,data不需要json格式,其他情况下的data均需json格式
# 如果是查询请求的话,需要params不需要data,其他请求均需data
if t_data["url"] == "http://127.0.0.1/api/mgr/signin":
r = requests.post(url=t_data["url"], data=json.loads(t_data["ParamsOrData"]), headers=headers)
elif t_data["method"] == "get":
r = requests.get(url=t_data["url"], params=json.loads(t_data["ParamsOrData"]), headers=headers)
else:
r = requests.request(method=t_data["method"], url=t_data["url"], data=json.dumps(json.loads(t_data["ParamsOrData"])), headers=headers)
# 期望的返回值
excepted = json.loads(t_data['response'])
# 真实的返回值
response = r.json()
# 如果真实的返回值和期望的不同,那么就存在bug
assert response["ret"] == excepted["ret"]
if __name__ == '__main__':
# 生成测试数据
pytest.main(["-sq", __file__, '--alluredir=./report'])
# 生成测试报告
os.system('allure generate ./report -O ./report-html --clean')
在Pycharm添加"allure-pytest"库和"allure-python-commons"库
打开Pycharm的设置,将“默认测试运行程序”从“pytest”改为“Unittest”
再次运行代码,即可得到新生成的文件夹“allure-report”,之后在这个文件夹中找到"index.html",右键选择“打开于”,在选择“浏览器”,再选择“edge”

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
看到这的小伙伴记得点个赞和关注哦~博主会继续进行测试的学习之路的q(≧▽≦q)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~