Python+Selenium框架设计篇之3-什么是POM

       前面我们介绍了Python中的单元测试框架unittest,以后我们所有的测试类文件,都采用unittest来辅助我们进行debug和脚本开发。搞定了debug机制和确定了unittest来进行创建和管理我们的自动化测试脚本,接下来我们来考虑下,框架设计中一种很普遍的设计思想-POM(Page Object Model)

       POM,中文字母意思是,页面对象模型,POM是一种最近几年非常流行的自动化测试模型,或者思想,POM不是一个框架,就是一个解决问题的思想。采用POM的目的,是为了解决前端中UI变化频繁,从而造成测试自动化脚本维护的成本越来越大。下图,形象描述了POM的好处。


      从上图看出,采取了POM设计思路和不采取的区别,左侧把测试代码和页面元素都写在一个类文件,如果需要更改页面,那么就要修改页面元素定位,从而要修改这个类中测试代码,这个看起来和混乱。右侧,采取POM后,主要的区别就是,把页面元素和业务逻辑和测试脚本分离出来到两个不同类文件。ClassA只写页面元素定位,和业务逻辑代码操作的封装,ClassB只写测试脚本,不关心如何元素定位,只写调用ClassA的代码去覆盖不同的测试场景。如果前端页面发生变化,只需要修改ClassA的元素定位,而不需要去修改ClassB中的测试脚本代码。

POM主要有以下优点:

1. 把web ui对象仓库从测试脚本分离,业务代码和测试脚本分离。

2. 每一个页面对应一个页面类,页面的元素写到这个页面类中。

3. 页面类主要包括该页面的元素定位,和和这些元素相关的业务操作代码封装的方法。

4. 代码复用,从而减少测试脚本代码量。

5. 层次清晰,同时支持多个编写自动化脚本开发,例如每个人写哪几个页面,不影响他人。

6. 建议页面类和业务逻辑方法都给一个有意义的名称,方便他人快速编写脚本和维护脚本。


  • 19
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
Python + Selenium + unittest 是一种常用的自动化测试框架,可以用于 web 应用程序的自动化测试。下面是一个简单的示例: 1. 安装 PythonSelenium: 首先需要安装 PythonSelenium,可以通过以下命令在终端中进行安装: ``` pip install selenium ``` 2. 创建一个测试文件(例如 `test.py`),引入必要的库: ```python from selenium import webdriver import unittest ``` 3. 在测试类中,初始化 webdriver,并编写测试用例: ```python class TestWeb(unittest.TestCase): def setUp(self): self.driver = webdriver.Chrome() self.driver.get("http://www.baidu.com") def test_search(self): driver = self.driver elem = driver.find_element_by_name("wd") elem.send_keys("selenium") elem.submit() self.assertIn("selenium", driver.title) def tearDown(self): self.driver.quit() if __name__ == '__main__': unittest.main() ``` 在上面的例子中,我们使用 Chrome 浏览器来打开百度网站,并在搜索框中输入关键字“selenium”,然后提交搜索。我们使用 `assertIn` 方法来验证页面标题是否包含关键字“selenium”。 4. 运行测试用例: 在终端中运行以下命令: ``` python test.py ``` 如果一切正常,你应该可以看到测试用例成功运行,并且输出类似于以下内容的结果: ``` Ran 1 test in 3.629s OK ``` 这只是一个简单的示例,实际的测试框架可能需要更多的配置和代码。你可以通过查看 Selenium 和 unittest 的文档来了解更多信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值