接口本质上是一种约定,使用过程中由接口的提供者和使用者组成。
我这里将接口分为两类,程序接口和协议接口。
接口的分类(按照调用关系)︰
- 系统与系统之间调用的接口
 - 同一系统,上下层调用的接口
 - 系统内,不同服务之前调用的接口
 
接口测试的意义:
- 更早的发现问题
 - 发现更底层的问题
 - 缩短产品研发周期
 - 检查服务器的异常处理能力
 
接口测试的技术方案:
- Webservice (SOAP+WSDL+UDDI)
 - HTTP (HTTP+JSON)
 - RPC (brpc,dubbo,gRPC)
 
requests库
Python的一个http库
import unittestimport requestsclass 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()
