自动化工具 pytest 自动化框架一般采用什么方式编写用例,框架搭建

为了美好的老年生活努力 · 2022年06月09日 · 最后由 Kevin.zhao 回复于 2022年06月16日 · 15315 次阅读

1、接口用例直接写在代码里面,一个用例一个函数,这种能更多的使用 pytest 的功能
2、接口用例写在 yaml 或者 execl 里面,一个用例一条记录,这种需要自己写一些方法结合 pytest 处理

暂定用例设计格式

#用例(名称)标题
case_name:
  #接口地址
  path:
  #请求方法
  method:
  # 备注信息
  remark:
  # 是否运行
  is_run: True
  #请求参数较多,这里就使用原始字典格式,除了提取表达式,其他的都带上引号,预防出错
  data:
    {"id":$.tq_data.id,"projectNo":"320SF000206004","name":$.tq_data.name}
  #从接口返回结果提取哪些字段和提取表达式,比如从返回数据提取用户id和name
  extract_key:
    id: $.data.id
    name: $.data.name
  #断言表达式
  assert_expression:
    - 1=='1'
    - cc=='dad'
    - 12 in '123'
    - ig in $.lpl.ig
共收到 13 条回复 时间 点赞

个人我而言,喜欢直接写代码,能接受 yaml,其次 JSON,Excel 强烈拒绝😷

能把用例转化成 yaml,然后可视化还是不错的。但是我一般不会用 yaml 编写用例

对 Ngwind 回复

那你是怎么编写自动化用例的

看实际场景需求和资源来定 如果参与脚本开发的人都有一定的代码能力 可以直接写代码 这样最灵活 对人员要求也要高一点

否则可以封装起来 对外只使用 excel 或 yaml 文件编辑 参与开发的人员只需要熟悉你框架开放的 api 规则就行了

存储介质常见的几种方式各有利弊 我们一般是使用 excel 编辑效率比纯文本文件高很多

对 fiskeryang 回复

https://blog.csdn.net/aaaaaaaaanjjj/article/details/122487373 我之前写过个框架,应该算是直接写代码来编写用例的。我现在打算写一个已 yaml 文件来作为用例的框架,最后可以写个 yaml 文件和 execl 文件数据转换的方法

我们团队目前的实现就是用的思路 2:Python+Pytest+Allure+Request+Excel
1、只需为每个项目创建一个 Excel 文件,维护测试用例即可,无需编码;
2、实现了案例读取、执行、断言、报告聚合、消息发送、用例自动生成等功能;
interfaceEx 接口自动化测试框架
欢迎交流

#用例(名称)标题
case_name:
  #接口地址
  path:
  #请求方法
  method:
  # 备注信息
  remark:
  # 是否运行
  is_run: True
  #请求参数较多,这里就使用原始字典格式,除了提取表达式,其他的都带上引号,预防出错
  data:
    {"id":$.tq_data.id,"projectNo":"320SF000206004","name":$.tq_data.name}
  #从接口返回结果提取哪些字段和提取表达式,比如从返回数据提取用户id和name
  extract_key:
    id: $.data.id
    name: $.data.name
  #断言表达式
  assert_expression:
    - 1=='1'
    - cc=='dad'
    - 12 in '123'
    - ig in $.lpl.ig

读取结果:{'case_name': {'path': None, 'method': None, 'remark': None, 'is_run': True, 'data': {'id': '$.tq_data.id', 'projectNo': '320SF000206004', 'name': '$.tq_data.name'}, 'extract_key': {'id': '$.data.id', 'name': '$.data.name'}, 'assert_expression': ["1=='1'", "cc=='dad'", "12 in '123'", 'ig in $.lpl.ig']}}

我准备这样设计用例,然后对 is_run,data,extract_key,assert_expression 等字段进行单独处理,最后组合最终请求数据

是用 pytest。就是比较常规的设计,接口定义层,业务逻辑层,用例层这样。每个用例要能独立运行。用例函数 (或者用例类) 尽量只与 fixture 交互,比如通过 fixture 执行通用的前提条件,通过 fixture 加载数据以及参数化,通过 fixture 获得业务逻辑层的业务实体对象,然后调用实体对象的方法。
优点是测试用例函数代码看起来很简短,阅读起来方便。缺点主要是会用到很多 fixture,而且还有多层 fixture 嵌套。

对 Ngwind 回复

不喜欢 Excel,主要因为 Excel 文件不是纯文本文件 (除非用 csv 保存),而且不好通过 git 进行版本管理 (查看 diff)。我可能有点开源洁癖,所以不喜欢用微软的 office 软件 (捂脸)

可以试下 HttpRunner,可以支持将抓包导出的 HAR 文件、Postman 转换为 pytest 格式的用例。

https://httprunner.com/blog/hrp-convert-intro/

1、接口用例直接写在代码里面,一个用例一个函数,这种能更多的使用 pytest 的功能
推荐采用这种方式,详细教程可参考:
https://dongfanger.gitee.io/blog/%E6%B5%8B%E8%AF%95%E5%B7%A5%E5%85%B7/000-%E3%80%90%E6%9C%80%E6%96%B0%E3%80%91tep%E5%AE%8C%E6%95%B4%E6%95%99%E7%A8%8B%E5%B8%AE%E4%BD%A0%E7%AA%81%E7%A0%B4pytest.html

可以选择代码加 json 或 yaml ,参数少就直接放代码里面,参数多就放文件里面

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册。