接口本质上是一种约定,使用过程中由接口的提供者和使用者组成。
我这里将接口分为两类,程序接口和协议接口。

接口的分类(按照调用关系)︰

  • 系统与系统之间调用的接口
  • 同一系统,上下层调用的接口
  • 系统内,不同服务之前调用的接口

接口测试的意义:

  • 更早的发现问题
  • 发现更底层的问题
  • 缩短产品研发周期
  • 检查服务器的异常处理能力

接口测试的技术方案:

  • Webservice (SOAP+WSDL+UDDI)
  • HTTP (HTTP+JSON)
  • RPC (brpc,dubbo,gRPC)

requests库

Python的一个http库

  1. import unittest
  2. import requests
  3. class TestHello(unittest.TestCase):
  4. def setUp(self):
  5. self.base_url = "http://127.0.0.1:5000"
  6. def test_case(self):
  7. url = "/user/tom"
  8. r = requests.get(self.base_url + url)
  9. result = r.json()
  10. self.assertEqual(result["code"], 10200)
  11. self.assertEqual(result["message"], "hello, tom")
  12. class TestGetUserInfo(unittest.TestCase):
  13. def setUp(self):
  14. self.base_url = "http://127.0.0.1:5000"
  15. def test_user_1(self):
  16. url = "/id/1"
  17. r = requests.get(self.base_url + url)
  18. result = r.json()
  19. print(result)
  20. self.assertEqual(result["code"], 10200)
  21. self.assertEqual(result["message"], "success")
  22. self.assertEqual(result["data"]["name"], "tom")
  23. self.assertEqual(result["data"]["age"], 22)
  24. def test_user_999(self):
  25. url = "/id/999"
  26. r = requests.get(self.base_url + url)
  27. result = r.json()
  28. print(result)
  29. self.assertEqual(result["code"], 10101)
  30. self.assertEqual(result["message"], "user id null")
  31. class TestLogin(unittest.TestCase):
  32. def setUp(self):
  33. self.base_url = "http://127.0.0.1:5000"
  34. def test_login_success(self):
  35. """登录成功"""
  36. payload = {'username': 'admin', "password": "a123456"}
  37. r = requests.post(self.base_url + "/login", data=payload)
  38. result = r.json()
  39. print(result)
  40. self.assertEqual(result["code"], 10200)
  41. self.assertEqual(result["message"], "login success")
  42. def test_login_null(self):
  43. """用户名密码为空"""
  44. payload = {'username': '', "password": ""}
  45. r = requests.post(self.base_url + "/login", data=payload)
  46. result = r.json()
  47. print(result)
  48. self.assertEqual(result["code"], 10103)
  49. self.assertEqual(result["message"], "username or passwrord is null")
  50. def test_login_error(self):
  51. """用户名密码为空"""
  52. payload = {'username': 'error', "password": "error123"}
  53. r = requests.post(self.base_url + "/login", data=payload)
  54. result = r.json()
  55. print(result)
  56. self.assertEqual(result["code"], 10104)
  57. self.assertEqual(result["message"], "username or password error")
  58. if __name__ == '__main__':
  59. unittest.main()