🔥 交流讨论:欢迎加入我们一起学习!
🔥 资源分享:耗时200+小时精选的「软件测试」资料包
🔥 教程推荐:火遍全网的《软件测试》教程
📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!
环境配置:
------------------------------------------
前提:有python载发环境,并且安装了pip ,强烈建议在linux下操作。
第一步,安装lettuce
root@machine:~$ [sudo] pip install lettuce
第二步,安装lettuce_webdriver
lettuce_webdriver · PyPI
root@machine:~$ [sudo] pip install lettuce_webdriver
第三步,安装nose
nose继承自unittest,属于第三方的python单元测试框架,且更容易使用,lettuce_webdriver包的运行依赖于nose模块
nose · PyPI
root@machine:~$ [sudo] pip install nose
---------------------------------
下面以为百度搜索为例,好吧!谁让这个例子能简单明了的讲解问题呢。所以,我们再次以百度搜索为例。
一般的百度搜索自动化脚本是这样的:
# coding = utf-8 from selenium import webdriver browser = webdriver.Firefox() browser.get("http://www.baidu.com") browser.find_element_by_id("kw1").send_keys("selenium") browser.find_element_by_id("su1").click() browser.quit()
下面看看BDD是怎么玩的:
创建目录结构如下:
.../test/features/baidu.feature
/step_definitions/setps.py
/support/terrain.py
先来回顾一下我们去写百度搜索脚本的过程:
功能:访问百度 场景:搜索selenium 我去访问百度的“http://www.badiu.com” 通过id 为“kw1”找到输入框并输入“selenium”关键字 点击 id为“su1” 按钮 然后,我在搜索结果上找到了“seleniumhq.com”的网址 最后,我关闭了浏览器
OK,确定了我们要做事情的过程,下面将其转换成BDD 的描述文件。
baidu.feature
Feature: Go to baidu Scenario: search selenium Given I go to "http://www.baidu.com/" When I fill in field with id "kw1" with "selenium" And I click id "su1" with baidu once Then I should see "seleniumhq.org" within 2 second Then I close browser
setps.py
from lettuce import * from lettuce_webdriver.util import assert_false from lettuce_webdriver.util import AssertContextManager def input_frame(browser, attribute): xpath = "//input[@id='%s']" % attribute elems = browser.find_elements_by_xpath(xpath) return elems[0] if elems else False def click_button(browser,attribute): xpath = "//input[@id='%s']" % attribute elems = browser.find_elements_by_xpath(xpath) return elems[0] if elems else False #定位输入框输入关键字 @step('I fill in field with id "(.*?)" with "(.*?)"') def baidu_text(step,field_name,value): with AssertContextManager(step): text_field = input_frame(world.browser, field_name) text_field.clear() text_field.send_keys(value) #点击“百度一下”按钮 @step('I click id "(.*?)" with baidu once') def baidu_click(step,field_name): with AssertContextManager(step): click_field = click_button(world.browser,field_name) click_field.click() #关闭浏览器 @step('I close browser') def close_browser(step): world.browser.quit()
注意:@step (‘xxx’)读取了baidu.feature 里有关键字,用正则表达式匹配的。 这是BDD的核心点。理解了这一点,就知道BDD是怎么玩的了。
terrain.py
from lettuce import before, world from selenium import webdriver import lettuce_webdriver.webdriver @before.all def setup_browser(): world.browser = webdriver.Friefox()
terrain文件配置浏览器驱动,可以作用于所有测试用例。
在.../test/目录下输入lettuce命令,运行结果如下图
对于当前测试用例来说,添加新的测试场景也非常简单,我们只用修改baidu.feature即可:
Feature: Go to baidu Scenario: search selenium Given I go to "http://www.baidu.com/" When I fill in field with id "kw1" with "selenium" And I click id "su1" with baidu once Then I should see "seleniumhq.org" within 2 second Scenario: search lettuce_webdriver Given I go to "http://www.baidu.com/" When I fill in field with id "kw1" with "lettuce_webdriver" And I click id "su1" with baidu once Then I should see "pypi.python.org" within 2 second Then I close browser
运行结果如下:
通过lettuce 来编写自动化脚本将是一件非常有趣的事儿。
最后我邀请你进入我们的【软件测试学习交流群:785128166】, 大家可以一起探讨交流软件测试,共同学习软件测试技术、面试等软件测试方方面面,还会有免费直播课,收获更多测试技巧,我们一起进阶Python自动化测试/测试开发,走向高薪之路
作为一个软件测试的过来人,我想尽自己最大的努力,帮助每一个伙伴都能顺利找到工作。所以我整理了下面这份资源,现在免费分享给大家,有需要的小伙伴可以关注【公众号:程序员二黑】自提!