一、类之间继承问题:
由于在test_api.py定义了全局变量,而test.user.py想使用这些全局变量就得导入test_api.py模块
但是因为test_user.py导入了test_api.py的模块并使用,到时候执行test_user.py的时候会把test.api.py中的方法(用例)也执行一遍
#演示:
目录结构:
test_api.py
import requests
class TestRequest():
#全局变量,类变量,通过类名调用
access_token=""
sess=requests.session() #定义全局变量sess=requests.session(),将所有的requests都替换为requests.session()就相当于都在一个会话中了
# 获取接口统一鉴权码token
def test_token(self):
url = "http://47.108.153.47:8089/qzcsbj/user/login"
shuju={
"username": "ddance",
"password": "000000"
}
res=TestRequest.sess.request(method="post",url=url,json=shuju) #将所有的requests都替换为requests.session()就相当于都在一个会话中了
print(res.json())
TestRequest.access_token=res.json()["data"]["token"] #将token的值赋给全局变量access_token
#修改一个商品
def test_edit_product(self):
url = "http://47.108.153.47:8089/qzcsbj/product/update"
shuju = {
"product": {
"id": 381,
"price": 20, #将价格改为20元
"productName": "狗粮"
},
"token": TestRequest.access_token
}
res=TestRequest.sess.request(method="post",url=url,json=shuju) #将所有的requests都替换为requests.session()就相当于都在一个会话中了
print(res.json())
#文件上传
def test_file_upload(self):
shuju = {
"name": "01"
}
shuju1={
"uploadfile":open(r"C:\01.jpg","rb"), #r:转义 rb:转化为只读的二进制流
}
url = "http://47.108.153.47:8089/qzcsbj/file/upload?name=" + shuju["name"] #接口文档中规定要将name的值跟在url之后,因此这里使用字典key提取name的值01拼接到url之后
res=TestRequest.sess.request(method="post",url=url,json=shuju,files=shuju1) #上传文件的时候使用files而不是data或者json #将所有的requests都替换为requests.session()就相当于都在一个会话中了
print(res.json())
test_user.py
import requests
from testcases.test_api import TestRequest #导入testcases包下的test_api模块下的TestRequest类
class TestUser():
#修改用户信息
def test_edit_user(self):
shuju={
"token": TestRequest.access_token, #使用TestRequest类的全局变量access_token
"user": {
"id": 1305,
"username": "ddance",
"password": "000000",
"realName": "string",
"sex": "0",
"birthday": "2001-01-01",
"phone": "13542588888", #修改电话号码为13542588888
"utype": "0",
"addtime": "2023-05-12 22:21:56.0",
"adduser": "ddance"
}
}
url = "http://47.108.153.47:8089/qzcsbj/user/update"
res=requests.request(method="post",url=url,json=shuju)
print(res.json())
all.py
import pytest
if __name__ == '__main__':
pytest.main()
执行结果:
D:\JetBrains\PycharmProjects\API接口测试\venv\Scripts\python.exe D:\JetBrains\PycharmProjects\API接口测试\all.py
============================= test session starts =============================
testcases\test_api.py ... [ 42%] #这里3个“.”表示执行了3个用例
testcases\test_user.py .... [100%] #这里4个“.”表示执行了4个用例
============================== 7 passed in 0.93s ==============================
Process finished with exit code 0
为什么test_user.py中明明一个用例却执行了4个用例呢?这是因为test_user.py调用test_api.py下的类的时候把test_api.py类下的用例也执行了一遍
如何避免这种错误呢,可以去掉全局变量,用YAML文件代替保存解决:
#演示:
目录结构:
标签:封装,url,py,接口,token,user,自动化,test,requests From: https://www.cnblogs.com/vorn/p/17398003.html