一、目的
本文用于记录python接口自动化框架搭建的主体架构
二、python自动化编码环境准备
见上一篇博客【python】python自动化编码环境准备
三、框架目录结构介绍
说明:
|--comon #定义的公共类、函数。包括Excel处理、log等。 |--excel_parse #解析excel通用类
|--logger #记录日志通用类
|--request #接口请求通用类
|--login #处理登录及session初始化 |--conf
|--conf.ini #全局配置文件,主要存放服务器ip,端口,登录用户名密码等信息。
|path_config.py #全局路径定义文件,例如测试数据存放路径等
|read_config.py
|--report #测试报告输出目录,包括allure-report和logs。 |--src_libs #自定义的关键字库,业务封装
|--aa #自定义类aa
|--bb #自定义类bb |--testcase #测试用例 |--test_aa #用例文件,以test_*开头 |--test_bb
|--testdata #测试数据 |--testdata_aa #e.g.存放大搜测试数据,excel格式 |--testdata_bb
|--main.py #测试用例主入口,支持带参数执行。
|--
pytest.ini
# pytest配置文件,用于定义case标签。
四、框架数据流
- 读取接口配置文件config.ini,包括:hostip,hostport,username,password等
- 读取Excel中的测试用例数据,返回用例列表caselist
- 参数化测试用例,将caselist中的用例数据逐条传递到用例中,处理数据中参数、变量
- 发送http请求,获取返回信息
- 校验结果,response result=expect result
- 存储变量
- 输出测试报告 ${workspace}/report/html/index.html
五、pytest简介
5.1.用例命名规则:
- 符合命名规则test_*.py 或者 *_test.py的文件
- 以test开头的函数名
- 以Test开头的测试类(没有__init__方法)当中,以test_开头的方法
- 断言使用基本的assert即可
5.2.用例执行顺序:
- 先执行类前置–>单用例前置–>方法用例–>用例后置–>类后置
- setup_class → setup_method → testcases ->teardown_method→teardown_class
- testcases的执行顺序随机
5.3.pytest执行用例
- 终端执行:pytest --sv test_XXX.py -m "smoke" --alluredir=../../report/allure_dir --clean-alluredir
- 主函数执行:pytest.main(["-sv","test_XXX.py","-m","smoke"])
- main.py 执行:python main.py test_XXX.py 10.82.241.66 8099
5.4.支持测试场景
- 支持对testcase分类执行@pytest.mark.smoke;pytest -m "smoke or V1.1.1"
- 跳过指定用例执行@pytest.mark.skip
- 支持自定义前置后置条件@pytest.fixture()
- 支持jenkins集成
- 支持多个接口之间的数据复用
- 测试数据驱动脚本,无需编写代码。使用Excel快速编写接口测试用例
六、框架
使用流程
- 在config.ini中配置服务器基本信息
- 在Excel中编写测试用例,并标记出需要运行的用例,放置在指定的路径testdata下
- 在pycharm中编写测试用例,参考【python】如何编写你的第一个自动化用例
- 在pycharm终端进入对应的用例文件夹下执行用例
#pytest -sv test_demo.py --alluredir=../../report/allure_dir --clean-alluredir
5.用例结束后,生成allure报告
#allure generate ../../report/allure_dir -o ../../report/html --clean
6.查看allure报告,在../../report/html目录下查看index.html,即测试报告