Selenium python UI 自动化通过 jinjia2 自动生成代码与 testcase 是基于代码的优缺点?

子夜 · 2021年08月23日 · 最后由 两仪院水月 回复于 2021年08月24日 · 2483 次阅读

各位大神,请教一个问题:
目前在做 UI 自动化,目前考察了两个方案:
方案一:python + Selenium + jinjia2-自动化生成代码,yaml 的配置文件中配置数据和测试用例,我个人认为,这种是属于数据驱动型测试框架,实现简单,只需要在配置文件中配置测试用例,自动生成代码

方案二,通过大家常用的 pytest + selenium, 用 PO 设计模式做 page 的封装,然后 testcase 是写在代码中的,比如

def test_01()
def test_02()

各位大神,这两个框架哪个好?各自的优缺点,是什么?谢谢各位大神,指导一下

共收到 8 条回复 时间 点赞

顶顶顶

希望各位大神可以指点一下

以下仅代表个人观点:
1、写 yml 配置形式。好处是实现简单,上手也简单,容易统一。缺点是灵活性容易受限,对于相对复杂的用例,写和调试相对麻烦,不好复用(不是复制粘贴,特指调用已有的某些步骤)。
2、直接写代码。好处是非常灵活,缺点也是过于灵活,没有好的规范容易乱。同时上手也相对难一些,需要有一些编程基础。

具体选哪个,核心看你们目前团队的编程水平。会编程的人多,第二种会更好,因为灵活性足够高,因此用例怎么多也不至于太乱。如果大部分不会编程,选第一种,甚至直接选录制回放生成脚本的可能更合适。

陈恒捷 回复

非常感谢您的回复,有一些点我也和您想的一样,对于 jinjia2 模板这种方法,比如复用和调试问题,就比较难了,因为用例模板都是死的

子夜 回复

嗯嗯,所以要结合团队情况看。

写配置的其实也是有办法做成复用的,最常见的方案就是关键字驱动(比如 robot framework),可以用写用例的方式写函数封装。不过会有点感觉像是四不像,简单程度上比纯数据驱动会复杂一些,毕竟可以有控制语句了(if/else/while 等),灵活程度上又没有代码灵活,没有适合的 ide 配套写起来非常难受。

我是觉得,如果编程水平实在不行的,那就直接弄录制回放,甚至考虑下此时是否适合引入自动化。因为先不论自动化脚本编写难度如何,实际自动化总会遇到一些问题需要排查,而排查解决没有一定的编程基础,是搞不定的,容易直接卡住。这种情况下,要不有专门自动化团队有能力协助搞定这些问题,要不就通过培训 + 淘汰,提高团队这方面能力。

陈恒捷 回复

非常赞同呀,如果编程能力欠佳的话,用 robot framework 还是挺好的选择,有界面,把关键字装配起来就是 test case, 灵活程度上没有代码灵活,但是自动化还是可以做起来的,不至于做不起来,如果代码能力好,还是代码比较灵活,如果考虑的长远,还可以考虑和自动化测试平台对接

推荐 cypress

jinjia2 是用来生成数据的吗还是单纯写测试模板。。

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