Python+Pytest+Yaml+Allure整体框架目录(源代码请等下篇)
框架详解
-
common:公共方法包
–get_path.py:获取文件路径方法
–logger_util.py:输出日志方法
–parameters_until.py:传参方式方法封装
–requests_util.py:请求方式方法封装
–yaml_util.py:yaml文件读取写入方法
-
config: 配置包
–config.yml:配置文件,主要为域名ip地址配置及日志输出级别
–extract.yml:接口上下游串联时,用例文件做参数化截取返回值后自动输出保存到该文件
-
data: 用于存放csv传参文件包(可用可不用,具体根据实际情况)
–get_token.csv:存放csv文件参数
-
logs: 日志输出文件,会自动生成
-
reports: 测试报告文件
-
testcase: 测试用例文件集
--fenmi:项目测试用例--login.yml:接口参数传参
# 如:- name: 1、获取UUIDbase_url: ${get_base_url(base_fenmi_url)}request:method: geturl: /fenmi/codeheaders:Authorization: '{{access_token}}'params:Accept: application/json, text/plain, */*Accept-Encoding: gzip, deflate, br, zstdAccept-Language: zh-CN,zh;q=0.9Connection: keep-aliveextract:uuid: '"uuid":"(.*?)"'validate:- equals: {code: 200}- equals: {msg: "操作成功"}# 解释:name:为接口名称base_url:读取config.yml文件的域名IPrequest:请求参数method:请求方式url:接口地址headers:请求头,比如token,'{{access_token}}'为取上游接口返回值做变量进行参数化,做参数化为固定写法'{{变量名}}'params: 请求参数,具体需要看接口请求传参方式extract:用于存在上下游接口关联时对返回值进行取值,固定写法,'"uuid":"(.*?)"'为正则表达式取值,也可用json提取,固定写法'"变量名":正则表达式'validate:断言 --test_fenmi.py: 单用例执行器,执行式传入对应yaml文件地址即可import allureimport pytestfrom common.requests_util import Requestutilfrom common.parameters_until import read_file@allure.epic('分米互联')@allure.feature('登录并查询服务收入细项列表数据')class Testrequests:# 获取access_token(get请求)@allure.story('获取uuid并登录获取token')@allure.severity("normal")@pytest.mark.parametrize("caseinfo",read_file('/testcases/fenmi/login.yml'))def test_get_token(self,caseinfo):allure.dynamic.title(caseinfo['name'])allure.dynamic.description(caseinfo['name'])Requestutil().analysis_yaml(caseinfo)
-
all.py: 主运行程序
-
conftest.py: 测试配置工具,clean_extract方法为重跑时清除原文件数据
-
debugtalk.py:自定义函数,用于存放公共函数和变量的文件
-
environment.properties:用于生成allure测试报告时,配置展示环境数据
-
pytest.ini: pytest测试运行配置文件,用于配置pytest运行时指定一些参数
[pytest]addopts = -vs --alluredir=reports/temp --clean-alluredir 运行时清除原先的测试报告及临时文件; testpaths = testcases/fenmi 执行单个项目测试文件时可选一个testcase目录testpaths = testcases/fenmi testcases/weixin testcases/Zgen 执行多个项目测试文件时可选多个testcase目录 python_files = test_*.py 执行的文件,及测试用例python_classes = Test* 执行对应测试用例目录所有Test开头的类python_functions = test_* 执行对应类下所有的test开头的方法