做接口自动化,主要使用两个库,
- requests 主要用来模拟发送请求
- pytest 主要用来维护自动化测试用例。
安装
打开【File】—【Settings】
安装
参考文档:https://docs.pytest.org/en/6.2.x/
基本使用
test_demo.py
def inc(x):
return x+1
# pytest 在运行的时候会自动的将 test_ 开头的函数当作测试用例来执行
def test_01():
# 添加断言
assert inc(3) == 4
在命令行中 运行
pytest test_demo.py
编写接口测试用例
test_demo.py
import requests
import random
def get_Phone():
phone = random.randint(13000000000,13999999999)
return phone
def test_register():
# 设置请求地址
u = "http://49.233.108.117:28019/api/v1/user/register"
# 请求的body
body = {
"loginName": get_Phone(),
"password": "123456"
}
# 发送post请求, post请求使用json格式,json(固定的)
r = requests.post(u,json=body)
# 添加断言
assert r.status_code == 200
# 对服务器返回的结果添加断言
print(r.json())
assert r.json()["resultCode"] == 200
assert r.json()["message"] == 'SUCCESS'
执行的使用 添加 ‘-s -v ‘参数
pytest test_demo.py -s -v
添加登录操作。
import requests
import random
def get_Phone():
phone = random.randint(13000000000,13999999999)
return phone
# 设置手机号
phone = get_Phone()
def test_register():
# 设置请求地址
u = "http://49.233.108.117:28019/api/v1/user/register"
# 请求的body
body = {
"loginName": phone,
"password": "123456"
}
print(f'使用数据 {body} 进行注册')
# 发送post请求, post请求使用json格式,json(固定的)
r = requests.post(u,json=body)
# 添加断言
assert r.status_code == 200
# 对服务器返回的结果添加断言
print(r.json())
assert r.json()["resultCode"] == 200
assert r.json()["message"] == 'SUCCESS'
def test_login():
url= "http://49.233.108.117:28019/api/v1/user/login"
body = {
"loginName": phone,
"passwordMd5": "E10ADC3949BA59ABBE56E057F20F883E"
}
print(f'使用数据 {body} 进行登录')
r = requests.post(url,json=body)
print(r.json())
assert r.status_code == 200
assert r.json()['resultCode'] == 200
assert r.json()['message'] == 'SUCCESS'
总结
使用 pytest 单元测试框架的时候,编写自动化测试用例,需要注意:
- 函数名必须以
test_
开头。如果没有运行的时候不会被当作自动化用例。 - 执行的时候使用 pytest 命令执行。
- 如果需要在运行的时候打印输出代码中的print信息。添加
-s -v
参数- -s 表示打印输出代码中的print语句。
- -v 表示显示详细日志。