目录
Python接口自动化完整【框架搭建】
1. 框架结构图
2. 框架介绍
3. Python测试用例
4. 框架基本展示
5. 框架代码基本展示
6. 批处理文件的操作
目录
1. 框架机构图
2. 框架介绍
3. 框架代码基本展示
4. 批处理文件的操作
1. 命名规范:
- API包中为了区分是接口还是ui、app等自动化,模块可用相应的前缀命名。如Api_getExcel.py、app_、web_ 并建立相应的类库包进行管理。
- 重点:给测试用例模块命名时:模块名一定要使用"test_" 前缀命名,因为在运行命令使用会更加方便;类名:TestlessonClass ;函数名:test_login() ;函数名称一定要test_前缀开头,否在无法运行pytest.
- pychram: 不指定模块名:pytest(['-sq','--html=pytest.html'])命令时,可以运行test_ 开头的所有模块。不用指定模块名称。
- Pychram的终端命令中:当前路径在测试用例包内,pytest -sq 便可运行test_ 开头的所有模块。不用指定模块名称。
1.环境初始化、清除数据【conftest.py 文件】
pytest 提供了fixure 实现了unitest中setup/teardown功能,可在每次执行case之前初始化数据。
(1)fixture默认是函数级别,可用级别:function,class,module,session
(2)可以写多个初始化与清除函数,测试函数需要使用只需要传入对应函数名即可
(3)当环境清除初始化中,设置参数:autouse=True 所有自动化函数自动调用,不用手动调用该环境初始化函数。或者不设置为True,默认为false,需要在所有自动化函数中手动调用该环境初始化函数。
2.module级别:
(1)score="module"
(2)如果一个模块内部同时有测试函数和测试类需要调用初始化函数,装饰器级别需要调整为module
(3)初始化操作只会在第一次传参的时候执行一次,清除操作会在所有测试用例执行完之后,执行一次
import requests
import pytest
"""
pytest 提供了fixure 实现了unitest中setup/teardown功能,可在每次执行case之前初始化数据。值需运行case会自动调用;
比setup、teardown更加灵活。
fixure scope的作用范围:
def fixture(scope='function',params = None,autouse=False...):
scope: 可选四个参数 function(默认)、class、module、package/session
parms: 一个可选参数列表,
autouse: 如果为True,则fixure func将为所有测试激活可看到它。如果为False(默认),使用时需要激活它。
"""
print('——————————————————————————Pytest自动化环境初清除初始化____________________________')
@pytest.fixture(scope='funtion',autouse=True) #环境初始化、数据清除,autouse=True 所有函数自动调用,不用手动调用该环境初始化函数。
def delete_all_lesson(request):
# 1. 登录
session = LoginClass().api_login('{"username":"auto","password":"sdk1234"}')
# 2. 列出所有课程数据
inData = {
'action':'list_course',
'pagenum':'1',
'pagesize':'20'
}
resList = json.loads(LessonClass().list_less(session,inData))['retless']
for one in resList:
lessonId = one['id'] # 获取课程id
# 3. 删除所有的课程
LessonClass().delete_lesson(session,lessonId)
# 创建课程测试数据{001}
for one in range(1,6):
lessonData = {"name":f'心田{one:0>3}','desc':'初中化学课程'...}
lessonClass().add_lesson(session,lessonData)
#环境、数据清除 -- teardown 最后执行
def fin():
print('-------------------测试环境恢复---------------------')
requests.addfinalizer(fin)
Mark标签使用方法: