pytest是python的一种单元测试框架,与python自带的unittest测试框架类似,但是比unittest框架使用起来更简洁,效率更高。根据pytest的官方网站介绍,它具有如下特点:
common_function.py
def login(s):
‘‘‘登录获取token‘‘‘
# s = requests.session() # 会话 代码里面的浏览器,模拟浏览器的功能
url = "api/Account/PwdLogin?"
par = {
‘mobile‘: 1730963,
‘password‘: 156
}
h = {‘appkey‘: ‘454‘}
# 转json
r = requests.get(url=url, headers=h, params=par)
print(r.json())
# token
token = r.json()[‘response‘][‘token‘]
print(f"取出token:{token}")
h = {
"Authorization": f"Bearer {token}",
‘appkey‘: ‘44‘
}
s.headers.update(h) # 更新到session会话
# 更新之后的头部
print(s.headers)
return token
if __name__ == ‘__main__‘:
s = requests.session()
login(s)
conftest.py
import pytest
import requests
from case.common_function import login
@pytest.fixture(scope="module")
def login_fix():
‘‘‘自定义一个前置的操作‘‘‘
print("先登陆")
s = requests.session()
login(s)
return s
@pytest.fixture(scope="function")
def unlogin_fix():
‘‘‘自定义一个前置的操作‘‘‘
print("不登陆")
s = requests.session()
s.headers.update({"Authorization": "Token f4b9a1dffbf525ecc93f8c80035c60fa546d5xxx"})
return s
test_detail.py
import allure
import pytest
test_data = [
[44763, {"message": "获取成功"}],
[44990, {"message": "商品不存在或已删除"}],
[447, {"message": "商品不存在或已删除"}],
]
@allure.story("登录用例")
@pytest.mark.parametrize("test_input,expect", test_data)
def test_info_34(login_fix, test_input, expect):
s = login_fix
url = "/api/ProductSpu/BusinessDetail?"
par = {
‘spuId‘: test_input
}
r = s.get(url, params=par)
print(r.json())
assert r.json()[‘msg‘] == expect[‘message‘]
pytest --alluredir ./report/allure_raw
pytest
原文:https://www.cnblogs.com/jiaoliuxuexi/p/15014313.html