用Python开发自动化测试脚本

发表于:2012-9-28 10:06

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:木匣子    来源:51Testing软件测试网采编

  通常对于一个稍具规模的系统,一些新的改动势必会带来一些额外的功能回归测试工作,而这个工作是非常繁杂的,人肉的方式一次又一次的重复将会非常的枯燥乏味。

  而我们所希望的,是一种自动化回归脚本的方式,可以重复性的回归现有功能,并给出回归测试报告。

  Python的世界有一个开源框架Splinter,可以非常棒的模拟浏览器的行为(从某种意义上也可以说是人的访问点击行为)。Splinter提供了丰富的API,可以获取页面的信息,以判断当前的行为所产生的结果。

  最简单的例子

  browser = Browser(‘firefox’) 模拟一个浏览器
  browser.visit(‘http://waptest.taobao.com/login/login.htm’) 访问指定URL
  browser.fill('TPL_username',’test_04’) 填充表单用户名
  browser.fill('TPL_password',’taobao1234’) 填充表单密码
  browser.find_by_value('登录').first.click()表单提交

  运行代码,splinter会打开你所指定的浏览器然后进行各种操作,像放电影一样的根据你的代码逻辑在你面前一步一步执行。

  举个例子,现在我们要回归登录功能,以前我们从未开发过这样的脚本,所以现在我们首先要开发一个用于模拟登录行为的脚本。

  如下面代码(其实是非常简短的一个代码):

#!/user/bin/python 
# -*- coding: utf8 -*- 
 
import sys 
import re 
from splinter.browser import Browser 
 
##################################################### 
# global instance 
CLOASE_AFTER_TEST = False 
GBK = "gbk" 
UTF8 = "utf8" 
 
##################################################### 
# encoding for console 
reload(sys) 
sys.setdefaultencoding(UTF8) 
 
##################################################### 
# small method 
encoding = lambda x:x.encode('gbk') 
 
##################################################### 
def output(x): 
    """
        encode and print
    """ 
    print encoding(x) 
 
def resultMsg(x): 
    """
        judge result and print, x : True or False
    """ 
    if x == True: 
        print 'pass' 
    else: 
        print '[X]not pass' 
    print '--------------------------' 
 
def checkresult(x): 
    """
        check result message, x : the error message u want
    """ 
    resultMsg(browser.is_text_present(x)) 
 
def testLogin(desc, username, password, result): 
    """
        fill login form message and submit, check result message and print
    """ 
    output(desc) 
    browser.fill('TPL_username',username.decode(UTF8)) 
    browser.fill('TPL_password',password.decode(UTF8)) 
    browser.find_by_value('登录').first.click() 
    checkresult(result) 
 
__testUrl = 'http://waptest.taobao.com/login/login.htm?tpl_redirect_url=http%3A%2F%2Fm.taobao.com%2F' 
 
# chrome driver :http://code.google.com/p/selenium/wiki/ChromeDriver 
# already support firefox 
browser = Browser() 
browser.visit(__testUrl) 
 
output("测试页面:"+browser.title) 
 
try: 
    # test login 
    testLogin('测试未输入用户名','','','请输入会员名') 
    testLogin('测试未输入密码','qd_test_001','','请输入密码') 
    testLogin('测试帐户不存在','这是一个不存在的名字哦','xxxxxxx','该账户名不存在') 
    testLogin('测试成功登录','qd_test_001','taobao1234','继续登录前操作') 
 
    # test find password 
    output("测试[找回密码]链接") 
    browser.visit(__testUrl) 
    backPasswordLink = browser.find_link_by_text('取回密码') 
    if 1 == len(backPasswordLink): 
        backPasswordLink.first.click() 
        ru = re.findall(re.compile(".*(reg/gp.htm).*", re.IGNORECASE), browser.url) 
        if ru is not None: 
            checkresult('找回密码') 
        else: 
            output("测试找回密码链接失败") 
 
except Exception,x: 
    print x 
 
if CLOASE_AFTER_TEST: 
    browser.quit()

21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号