1、pytest 和 unittest 的区别?
首先 unittest 是 pytest 官方库,兼容性更好更稳定,pytest 在安装的时候可能会出现和 Python 的版本出现兼容问题;
在 用例编写上面,unittest
当中,用例都是以类的形式编写的,并且都要继承于这个 testcase;
pytest 当中,支持函数 和 类两种形式,并且 pytest 有 conftest.py 这个文件来支持全局的共享前置后置;
在 用例收集上, unittest 当中,要利用 testloader he testsuite 来主动收集和加载用例;pytest 当中,能够自动识别用例;
在 用例分类和筛选上面,unittest 当中,对现有的用例进行一个筛选和处理的话是比较麻烦的;pytest 当中,可以通过打标记来轻松实现用例筛选;
在 运行失败的机制上面,unittest 当中,官方库并没有提供失败重启的机制;pytest 当中,自带的失败重运行机制;
在 运行过程上面,unittest 当中,没有支持的插件;pytest 当中,有 700 多个插件,可以支持的插件非常丰富;
2、列表推导式是什么?
推导式 是 Python 中用来生成数据的一种高级用法,Python 不仅有列表推导时,还有字典推导式、集合推导式、生成器表达式;
它的语法都是一样的,都是通过 for 循环来创建数据的一种简写的方式;
3、什么是 PO 模式?
PO模式:全称:Page Object Model 简称PO,叫做页面对象,针对页面、UI界面;
PO 思想主要来源于 马丁福勒
(marktin Flowwer)在 2004年发表的一篇文章最开始他不叫 PO ,而是叫做 window driver ,后来 selenium 沿用了这种思想,所以改成了 PO;
主要用途:是把一个具体的页面转化为编程语言当中的一个对象,页面特性转化成对象属性,页面操作转化为对象方法;
在自动化测试当中,主要用来实现对页面操作和测试逻辑的一个分离;
4、最熟悉的 selenium 操作?
基本上 selenium 提供的一下几大类操作都能够灵活使用,比如说:八大元素定位方式、三大等待方式、用户点击、输入等常见操作、
还有窗口切换、iframe 切换操作,比如说 actionchains 文件上传、JS操作 等一些复杂问题的操作;
对于 selenium 还没有提供现场封装方法的话 会查阅 W3C 组织提供的 webdriver 标准进行自己进行捕捉;
5、selenium 中登录按钮除了 click 还有什么方式?
还有这两种方式:比如说要用到 物理键盘进行操作,发出回车指令;然后,如果说这个登录按钮,在一个表单里面的话,也可以在定位到这个用户输入框,输入完了之后,直接用3D 方法进行提交
6、PO 模式的封装原则有哪些?
selenium 在官方的 wiki 上面给我们提供了六个原则,实际测试过程中可以这么理解:
第一个原则是,公共方法表示页面提供的一个服务,比如我们可以把 登录封装成一个 logo 的方法,把搜索方法封装成一个设施方法,把注册操作封装成一个 register 的方法;
第二个原则是,尽量不要暴露页面的内部;比如说一个HTML的页面还有一个页面的上下结构;
第三个原则是,在 PO 当中一般不做断言,会做到页面逻辑和测试逻辑的分离
第四个原则是,PO 一般里面的方法返回 self 或者是其他的 Page Object 也可以是一个元素属性
第五个原则是,整个 PO 你不需要封装整个页面的行为,用到什么逻辑就封装什么
第六个原则是,对于统一操作,如果出现不同的结果,可以把用不同的方法来表示,比如说登录成功有跳转,登录失败有报错,
如果登录还有一种会授权的状况,那么可以封装成三个单独的方法:login success、login error、login invalid
感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:
这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取