软件测试面试问答

发布时间:2026/7/31 11:06:18
软件测试面试问答 1、pytest 和 unittest 的区别首先 unittest 是 pytest 官方库兼容性更好更稳定pytest 在安装的时候可能会出现和 Python 的版本出现兼容问题在 用例编写上面unittest当中用例都是以类的形式编写的并且都要继承于这个 testcasepytest 当中支持函数 和 类两种形式并且 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感谢每一个认真阅读我文章的人礼尚往来总是要有的虽然不是什么很值钱的东西如果你用得到的话可以直接拿走这些资料对于【软件测试】的朋友来说应该是最全面最完整的备战仓库这个仓库也陪伴上万个测试工程师们走过最艰难的路程希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取