前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Pytest插件之selenium(十三)

Pytest插件之selenium(十三)

作者头像
无涯WuYa
发布2020-02-25 13:10:02
9350
发布2020-02-25 13:10:02
举报

在前面的文章体系中介绍了Pytest的案例实战插件应用,今天主要演示Pytest框架的selenium插件。webdriver是主流的UI自动化测试框架,在Pytest的测试框架中也提供了对webdriver的支持,安装的命令为:

pip3 install pytest-selenium,如下图所示:

安装成功后,就以测试百度首先为案例,来编写一个简单的测试点,源码如下:

代码语言:javascript
复制
#!/usr/bin/env python
#!coding:utf-8
import  pytest

def test_baidu_title(selenium):
   selenium.get('http://www.baidu.com/')
   assert  selenium.title=='百度一下,你就知道'
def test_baidu_current_url(selenium):
   selenium.get('http://www.baidu.com/')
   assert selenium.current_url=='https://www.baidu.com/'
def test_baidu_so_getValue(selenium):
   selenium.get('http://www.baidu.com/')
   so=selenium.find_element_by_id('kw')
   so.send_keys('无涯')
   assert  so.get_attribute('value')=='无涯'

编写如上的代码后,执行如下命令,执行如上的测试脚本:

pytest -v test_ui.py(#python模块文件) --driver Chrome 执行命令后的输出信息:

在上面的截图信息中,可以看到执行结果都是OK的,执行中打开的是Chrome的浏览器。对命令的部分进行逐步的解释下,--driver可以理解为webdriver实例化后的对象,在测试的脚本中,测试函数里面的参数selenium,本质上就是webdriver实例化后的对象,Chrome很好理解,就是指定测试的浏览器,如果是Firefox的浏览器,那么在命令执行中把Chrome浏览器修改为Firefox的浏览器。

在unittest的测试框架中存在测试固件,也就是初始化以及清理的操作,在Pytest也可以通过fixture来完成这样的一个效果,让测试脚本更加关注于具体的业务流程和逻辑操作,而不需要关心打开浏览器这样的一个操作,如上面的案例,每个测试点里面都调用了get()的方法来打开测试的地址,这样就显得重复,对测试代码进行优化,优化后的代码为:

代码语言:javascript
复制
#!/usr/bin/env python
#!coding:utf-8
import  pytest

@pytest.fixture()
def init(selenium):
   selenium.get('http://www.baidu.com/')
   yield
   selenium.quit()

def test_baidu_title(init,selenium):
   assert  selenium.title=='百度一下,你就知道'
def test_baidu_current_url(init,selenium):
   assert selenium.current_url=='https://www.baidu.com/'
def test_baidu_so_getValue(init,selenium):
   so=selenium.find_element_by_id('kw')
   so.send_keys('无涯')
   assert  so.get_attribute('value')=='无涯'

在上面的代码中可以看到,对初始化和清理的部分进行了很好的分离,在unittest的测试框架中其实利用类的继承思想,也是可以很好的对测试固件setUp()和tearDown()进行很好的分离,不过在Pytest的测试框架中,这样的一个过程更加简单和直接,几行代码就能够很轻松的搞定。再次执行,执行结果与第一次执行的结果一致。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-02-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python自动化测试 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档