Robot Framework + Playwright 自封装关键字的实现思路

Robot Framework是目前比较强大的自动化测试框架。

实际上,官方对于Pytest+Playwright讲解内容较多,但是涉及到Robot Framework的内容较少,要么就是主要利用了Playwright库实现,步骤都在用例里。

对于拆封2级Case->BUS PAGE->Basic PO这种模式来说,我是如下实现的:

1.前置条件

RobotFramework会在Suite启动时实例化Library关键字对应的库,所以我们在所有.robot内引入的PY库,全部不能创建单例对象,例如,不能创建多个Browser或者多个Sync Playwright对象中,这个要记好,否则会报错。

playwright setup时,会实例化一次,suite setup会再次实例化一次造成创建了2个对象,报错。

这里可以先考虑每次实例化__init__都检查一下是否实例化过

在启动整个Suite时,应该只共享一个Context,或者至少只共享一个Sync Playwright对象

Robot Framework + Playwright 自封装关键字的实现思路_第1张图片

可以考虑用 RF自带的 函数 存到变量,然后用is Not None判断是否创建过。

Robot Framewrok自己的实例化不能保留self属性,所以我们需要在用例层创建Page模型,而不是将最底层暴露给RF。

原理:Case的关键字所在的类,__init__检查是否已有context,有则调用继承Page的 (__init__  -> rb_get_context ().new_page())

原因:检查context是因为rf会先缓存所有的class进而触发init,如不检查会导致context类缓存时还未创建完成context就去new_page,然后报空指针错误。

 

你可能感兴趣的:(python,自动化)