接口本质上是一种约定,使用过程中由接口的提供者和使用者组成。
我这里将接口分为两类,程序接口和协议接口。
接口的分类(按照调用关系)︰
- 系统与系统之间调用的接口
- 同一系统,上下层调用的接口
- 系统内,不同服务之前调用的接口
接口测试的意义:
- 更早的发现问题
- 发现更底层的问题
- 缩短产品研发周期
- 检查服务器的异常处理能力
接口测试的技术方案:
- Webservice (SOAP+WSDL+UDDI)
- HTTP (HTTP+JSON)
- RPC (brpc,dubbo,gRPC)
requests库
Python的一个http库
import unittest
import requests
class TestHello(unittest.TestCase):
def setUp(self):
self.base_url = "http://127.0.0.1:5000"
def test_case(self):
url = "/user/tom"
r = requests.get(self.base_url + url)
result = r.json()
self.assertEqual(result["code"], 10200)
self.assertEqual(result["message"], "hello, tom")
class TestGetUserInfo(unittest.TestCase):
def setUp(self):
self.base_url = "http://127.0.0.1:5000"
def test_user_1(self):
url = "/id/1"
r = requests.get(self.base_url + url)
result = r.json()
print(result)
self.assertEqual(result["code"], 10200)
self.assertEqual(result["message"], "success")
self.assertEqual(result["data"]["name"], "tom")
self.assertEqual(result["data"]["age"], 22)
def test_user_999(self):
url = "/id/999"
r = requests.get(self.base_url + url)
result = r.json()
print(result)
self.assertEqual(result["code"], 10101)
self.assertEqual(result["message"], "user id null")
class TestLogin(unittest.TestCase):
def setUp(self):
self.base_url = "http://127.0.0.1:5000"
def test_login_success(self):
"""登录成功"""
payload = {'username': 'admin', "password": "a123456"}
r = requests.post(self.base_url + "/login", data=payload)
result = r.json()
print(result)
self.assertEqual(result["code"], 10200)
self.assertEqual(result["message"], "login success")
def test_login_null(self):
"""用户名密码为空"""
payload = {'username': '', "password": ""}
r = requests.post(self.base_url + "/login", data=payload)
result = r.json()
print(result)
self.assertEqual(result["code"], 10103)
self.assertEqual(result["message"], "username or passwrord is null")
def test_login_error(self):
"""用户名密码为空"""
payload = {'username': 'error', "password": "error123"}
r = requests.post(self.base_url + "/login", data=payload)
result = r.json()
print(result)
self.assertEqual(result["code"], 10104)
self.assertEqual(result["message"], "username or password error")
if __name__ == '__main__':
unittest.main()