医疗平台怎么测试智慧医疗管理平台自动化接口测试代码

新闻资讯2026-04-21 05:26:57

目录

前言

单个接口测试

登录功能

增添功能

修改功能

删除功能

查询功能

csv文件与自动化接口测试

编写测试用例

测试脚本代码

生成Allure测试报告


关于接口测试工具,想必大家都知道Postman吧。Postman是一款流行的接口测试软件,它里面主要包含了接口的Post、Get、Put、Delete请求方式以及各种断言,而这些都可以用python编写,而且可以根据自己项目去设置方法,灵活性要更高。如果是基础比较差的朋友可以先学习一下postman的使用,可能会帮助理解。

使用postman工具对项目的测试:关于智慧医疗管理平台的自动化接口测试-CSDN博客

所以本篇文章主要写了使用Pytest测试框架去编写接口的请求以及断言。

在进行测试前

1. 需要下载Pytest以及Requests包,这些可以直接在Pycharm中的“python软件包”中下载。

医疗平台怎么测试智慧医疗管理平台自动化接口测试代码_https://www.jmylbn.com_新闻资讯_第1张

2. 下载测试项目资源

白月黑羽官网介绍:BYSMS系统 API 接口 1.0 - 白月黑羽 (byhy.net)

Gitee资源:智慧医疗药物管理平台: 一款关于医院中客户订单与药物订单的管理平台 (gitee.com)

资源下载好后,点击“runserver.bat”并一直保持运行状态点击白月SMS系统 | 登录即可登录。

医疗平台怎么测试智慧医疗管理平台自动化接口测试代码_https://www.jmylbn.com_新闻资讯_第2张

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的方法:

医疗平台怎么测试智慧医疗管理平台自动化接口测试代码_https://www.jmylbn.com_新闻资讯_第3张

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博客

医疗平台怎么测试智慧医疗管理平台自动化接口测试代码_https://www.jmylbn.com_新闻资讯_第4张

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')
  1. 在Pycharm添加"allure-pytest"库和"allure-python-commons"库
    医疗平台怎么测试智慧医疗管理平台自动化接口测试代码_https://www.jmylbn.com_新闻资讯_第5张

  2. 打开Pycharm的设置,将“默认测试运行程序”从“pytest”改为“Unittest”
    医疗平台怎么测试智慧医疗管理平台自动化接口测试代码_https://www.jmylbn.com_新闻资讯_第6张

  3.  再次运行代码,即可得到新生成的文件夹“allure-report”,之后在这个文件夹中找到"index.html",右键选择“打开于”,在选择“浏览器”,再选择“edge”
    医疗平台怎么测试智慧医疗管理平台自动化接口测试代码_https://www.jmylbn.com_新闻资讯_第7张

  4. 得到一份美丽的测试报告
    医疗平台怎么测试智慧医疗管理平台自动化接口测试代码_https://www.jmylbn.com_新闻资讯_第8张

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

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

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~