做接口自动化,主要使用两个库,

  • requests 主要用来模拟发送请求
  • pytest 主要用来维护自动化测试用例。

安装

打开【File】—【Settings】
image.pngimage.png
安装
image.png

参考文档:https://docs.pytest.org/en/6.2.x/

基本使用

test_demo.py

  1. def inc(x):
  2. return x+1
  3. # pytest 在运行的时候会自动的将 test_ 开头的函数当作测试用例来执行
  4. def test_01():
  5. # 添加断言
  6. assert inc(3) == 4

在命令行中 运行

  1. pytest test_demo.py

image.png

编写接口测试用例

test_demo.py

  1. import requests
  2. import random
  3. def get_Phone():
  4. phone = random.randint(13000000000,13999999999)
  5. return phone
  6. def test_register():
  7. # 设置请求地址
  8. u = "http://49.233.108.117:28019/api/v1/user/register"
  9. # 请求的body
  10. body = {
  11. "loginName": get_Phone(),
  12. "password": "123456"
  13. }
  14. # 发送post请求, post请求使用json格式,json(固定的)
  15. r = requests.post(u,json=body)
  16. # 添加断言
  17. assert r.status_code == 200
  18. # 对服务器返回的结果添加断言
  19. print(r.json())
  20. assert r.json()["resultCode"] == 200
  21. assert r.json()["message"] == 'SUCCESS'

执行的使用 添加 ‘-s -v ‘参数

  1. pytest test_demo.py -s -v

image.png

添加登录操作。

  1. import requests
  2. import random
  3. def get_Phone():
  4. phone = random.randint(13000000000,13999999999)
  5. return phone
  6. # 设置手机号
  7. phone = get_Phone()
  8. def test_register():
  9. # 设置请求地址
  10. u = "http://49.233.108.117:28019/api/v1/user/register"
  11. # 请求的body
  12. body = {
  13. "loginName": phone,
  14. "password": "123456"
  15. }
  16. print(f'使用数据 {body} 进行注册')
  17. # 发送post请求, post请求使用json格式,json(固定的)
  18. r = requests.post(u,json=body)
  19. # 添加断言
  20. assert r.status_code == 200
  21. # 对服务器返回的结果添加断言
  22. print(r.json())
  23. assert r.json()["resultCode"] == 200
  24. assert r.json()["message"] == 'SUCCESS'
  25. def test_login():
  26. url= "http://49.233.108.117:28019/api/v1/user/login"
  27. body = {
  28. "loginName": phone,
  29. "passwordMd5": "E10ADC3949BA59ABBE56E057F20F883E"
  30. }
  31. print(f'使用数据 {body} 进行登录')
  32. r = requests.post(url,json=body)
  33. print(r.json())
  34. assert r.status_code == 200
  35. assert r.json()['resultCode'] == 200
  36. assert r.json()['message'] == 'SUCCESS'

总结

使用 pytest 单元测试框架的时候,编写自动化测试用例,需要注意:

  1. 函数名必须以test_ 开头。如果没有运行的时候不会被当作自动化用例。
  2. 执行的时候使用 pytest 命令执行。
  3. 如果需要在运行的时候打印输出代码中的print信息。添加 -s -v 参数
    1. -s 表示打印输出代码中的print语句。
    2. -v 表示显示详细日志。