测试框架封装-打造多引擎框架

演练代码

简化数据驱动格式

  - id: search
    action: click
  - id: search
    action: sendKeys
    text: "seveniruby hogwarts"
  - id: search
    sendKeys: "seveniruby hogwarts"
  - id: search
    click: null
  - click: {id: search}

与领域BasePage结合

  • 完成了web自动化的封装

打造多引擎框架

  • driver相关的数据处理
  • 参数化数据驱动
  • 脱离代码运行
  • po封装

命令行调度

https://repo1.maven.org/maven2/org/junit/platform/junit-platform-console-standalone


课间练习

  • 完成get attribute 获取文本 的封装

课后作业

  • 只需要自己设计完整即可

是否完成不做要求,如果有完成的,可以把github地址贴到回复里

开源项目

一起联手做一个数据驱动的开源项目,同时支持web app 接口。
用例自动生成在接口后会再次讲到

1 Like

占楼

占楼

  • 测试步骤封装后,如果一个测试用例涉及到多个PO的切换或者跳转(流程比较长),这样单纯的 click: locator 怎样体现是在哪个PO进行的操作呢?
  • 之前老师的课上出现一种情况,需要不断点击直到某个元素消失或者显示;这样是要跟普通的点击区分出来,另外封装一个 click 步骤吗?

占楼~

我们课上用的代码git地址在哪里呢?

实际工作中,App自动化和Web自动化,包括接口自动化,写在一个项目里吗?还是分开写?

演练地址是这个,老师

疑问:

  1. 一个yaml文件作为一份用例进行维护吗?通常使用junit5注解或allure注解对用例分类和模块划分吧
  2. 用例中步骤比较多时,不方便快速定位失败位置,怎么优化比较好
  3. yaml中上一个step获取的值怎么往下一个step传递?

1) basepage类中有很多if判断,会不会对程序执行效率有影响?
2) basepage类中有yaml里面匹配的明文关键字,例如action.containsKey(“page”)等等,这样维护起来会不会很笨重?

占楼

占楼

参考老师上课内容完成,以下几点是练习过程中被坑了很久的地方:
1.视频中pageObject页面解析yaml文件字段封装在action中,这个模块看了好几遍才弄清楚逻辑,所以我把page和action进行了区分,这样更清晰一些
2. po模块的页面yaml文件name值与测试用例yaml文件page字段值相互对应,action(如:
name: mainPage methods: init: - action: get url: https://ceshiren.com/ toContent: - click: {linkText: 最新} - click: {linkText: 热门}) 与测试用例中steps中(- page: mainPage action: toContent)对应否则测试用例执行失败

完成老师的作业

跟着老师做完了。

第3点,如果是在一个yaml内,可以使用yaml的锚点和引用语法实现,参见这个帖子:http://www.ruanyifeng.com/blog/2016/07/yaml.html?f=tt

在表示Page Oject Model的yaml中,方法中需要传入参数,这个有比较好的实现思路吗?

已参考 残枫同学 和 抉择助教 给的方法(把参数封装进java变量中)解决 。

另完成作业:

测试框架改动:

  1. 增加对测试用例预期结果(关键字:expect)的支持
  2. 增加对测试用例数据(关键字:params)的支持
  3. 运行用例(run方法)返回成功或者失败标记
  4. 其它优化

以上改动以企业微信web端增加成员为用例调试通过。

关闭