软件测试面试问答
2026/7/31 11:06:15 网站建设 项目流程
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

感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询