菜单 学习猿地 - LMONKEY

VIP

开通学习猿地VIP

尊享10项VIP特权 持续新增

知识通关挑战

打卡带练!告别无效练习

接私单赚外块

VIP优先接,累计金额超百万

学习猿地私房课免费学

大厂实战课仅对VIP开放

你的一对一导师

每月可免费咨询大牛30次

领取更多软件工程师实用特权

入驻
0
0

python自动化测试学习 - Pytest插件之selenium

原创
05/13 14:22
阅读数 377

推荐课程《Python开发工程师--学习猿地精品在线课》
今天主要演示Pytest框架的selenium插件。webdriver是主流的UI自动化测试框架,在Pytest的测试框架中也提供了对webdriver的支持,安装的命令为:

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

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

01丨 #!/usr/bin/env python
02丨
03丨 #!coding:utf-8
04丨
05丨 import pytest
06丨
07丨
08丨
09丨 def test_baidu_title(selenium):
10丨
11丨 selenium.get('http://www.baidu.com/')
12丨
13丨 assert selenium.title=='百度一下,你就知道'
14丨
15丨 def test_baidu_current_url(selenium):
16丨
17丨 selenium.get('http://www.baidu.com/')
18丨
19丨 assert selenium.current_url=='https://www.baidu.com/'
20丨
21丨 def test_baidu_so_getValue(selenium):
22丨
23丨 selenium.get('http://www.baidu.com/')
24丨
25丨 so=selenium.find_element_by_id('kw')
26丨
27丨 so.send_keys('伤心的辣条')
28丨
29丨 assert so.get_attribute('value')=='伤心的辣条'

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

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

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

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

01丨 #!/usr/bin/env python
02丨
03丨 #!coding:utf-8
04丨
05丨 import pytest
06丨
07丨 @pytest.fixture()
08丨
09丨 def init(selenium):
10丨
11丨 selenium.get('http://www.baidu.com/')
12丨
13丨 yield
14丨
15丨 selenium.quit()

01丨 def test_baidu_title(init,selenium):
02丨
03丨 assert selenium.title=='百度一下,你就知道'
04丨
05丨 def test_baidu_current_url(init,selenium):
06丨
07丨 assert selenium.current_url=='https://www.baidu.com/'
08丨
09丨 def test_baidu_so_getValue(init,selenium):
10丨
11丨 so=selenium.find_element_by_id('kw')
12丨
13丨 so.send_keys('伤心的辣条')
14丨
15丨 assert so.get_attribute('value')=='伤心的辣条'

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

软件测试是IT相关行业中最容易入门的学科~不需要开发人员烧脑的逻辑思维、不需要运维人员24小时的随时待命,需要的是细心认真的态度和IT相关知识点广度的了解,每个测试人员从入行到成为专业大牛的成长路线可划分为:软件测试、自动化测试、测试开发工程师 3个阶段。

原文来自:https://blog.csdn.net/nav/python

发表评论

0/200
0 点赞
0 评论
收藏
为你推荐 换一批