0. 写在前面

本人使用Python测试已有多年,略有些皮毛经验。每次有新员工入职,都会从头教一遍如何入门上手使用Python进行测试。趁这段有空,整理成文档,也好方便后续新员工学习。文章如有不妥之处,也请各位不吝赐教^ ^

1. 测试在哪用到Python?

我的答案是:基本哪都可以用到,尤其是有重复的费时费力的任务时。大概罗列一下:

  1. 持续集成CI (自动部署,测试)
  2. 自动化测试(后端、前端及客户端自动化测试)
  3. 爬虫、日志分析等工具

2. 入门教程及IDE

  1. Python2.7在线教程

    http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000

  2. 《Python核心编程》

    PDF链接:http://pan.baidu.com/s/1bpzpY6j 提取码:bk6w

  3. pip

    pip是一款非常方便的python包管理工具,安装教程:http://lovesoo.org/windows-install-the-pip-method.html

    常用命令如下:

    #安装包
    pip install xxx #升级包,可以使用-U 或者 --upgrade
    pip install -U xxx #卸载包
    pip uninstall xxx #列出已安装的包
    pip list
  4. pycharm

    官网:http://www.jetbrains.com/pycharm/

    下载安装完成后,注册时选择License server,输入:http://idea.imsxm.com

    即可激活^ ^

3. 持续集成

目前常用的持续集成工具一般是Jenkins,使用Python可以轻松完成版本构建后的自动部署、自动化测试(主要是BVT测试,功能自动化测试及回归测试)。

《Jenkins集成taffy进行自动化测试并输出测试报告》详见:http://www.cnblogs.com/lovesoo/p/7719138.html

常用的自动部署工具有fabric及ansible。

3.1 fabric

fabric官网:https://github.com/fabric

fabric入门教程:http://lovesoo.org/python-fabric-yuan-cheng-zi-dong-bu-shu-jian-jie.html

3.2 ansible

ansible官网:https://github.com/ansible

ansible中文教程:http://www.ansible.com.cn/

4. 自动化测试

由于本人主要从事后端及部分WEB前端测试,对于客户端(ios/android)的自动化测试不甚了解,所以在此着重介绍Python在后端接口测试中的应用。

4.1 后端测试

4.1.1 基本流程

后端测试主要时通过测试http,webservice,dubbo(hessian)等类型接口,从而完成对后端组件的功能测试。一般接口基本测试流程如下:

  1. 用例设计,主要使用MindManager/XMind等脑图软件设计接口测试用例,如一个简单视频搜索接口(输入name返回videoName)的用例设计示例如下:
  2. 转换为python测试脚本,主要包括用例管理,接口调用及结果校验等
  3. 执行脚本完成接口自动化测试

4.1.2 常用框架

这里只介绍目前主流的两种框架:

  1. RobotFramework

    官网:http://robotframework.org

    入门教程:http://www.cnblogs.com/lovesoo/p/7748487.html

  2. Nose

    官网:http://nose.readthedocs.org

目前我们主要使用Nose框架,之前调研了RF框架并实现了几个接口的自动化测试,个人感觉而言RF上手相对较难,在基础类库(keyword)稳定后测试人员只需简单编写测试数据驱动即可,对测试人员成长不是很有利,而且Nose框架与pycharm无缝连接,使用更加便捷直观。

另外,(小小的打个广告)Taffy是在nose框架基础进行的二次封装,可以实现对不同类型的后台接口及WEB页面自动化测试及性能测试,详见:https://github.com/lovesoo/Taffy

关于不同类型的测试框架选择,请参考:http://www.infoq.com/cn/news/2012/06/robot-author-suggest-autotest/

4.1.3 Python常用lib库

下面介绍使用Python编写后端接口测试代码中常用的lib库:

  1. 通用lib库

    1. json: https://docs.python.org/2.7/tutorial/inputoutput.html#saving-structured-data-with-json

    2. 日志模块:logging https://docs.python.org/2.7/library/logging.html

    3. 异步并发模块:concurrent.futures

      入门教程:http://www.cnblogs.com/lovesoo/p/7741576.html

    4. excel相关操作库:读取 xlrd、写入 xlwt、修改 xlutils

    5. 正则表达式模块:re

    6. 日期模块:time,datetime

    7. PyMySQL:https://github.com/PyMySQL/PyMySQL

    8. redis:https://pypi.python.org/pypi/redis

    9. pymongo: http://api.mongodb.org/python/current/

  2. http接口

    requests: http://cn.python-requests.org/zh_CN/latest/

  3. dubbo接口(hessian协议)

    python-hessian:https://github.com/theatlantic/python-hessian

    Python调用Hessian协议接口示例:http://lovesoo.org/python-called-dubbo-hessian-protocol-interface-example.html

4.1.4 示例demo

以百度首页搜索为例,写了比较简单的Nose框架接口测试demo

详见:https://github.com/lovesoo/test_demo/blob/master/test_baidu/test_baiduSearch.py

4.2 前端(WEB)测试

Selenium几乎是现在Python WEB自动化测框架的唯一选择了

官网地址:http://www.seleniumhq.org/

PDF教程: https://pan.baidu.com/s/1c2IXJWW 密码: 4r5v

4.3 客户端(ios/android)测试

Python客户端(ios/android)自动化主要框架主要有Appium,uiautomator等

Appium: http://appium.io/

uiautomator: https://github.com/xiaocong/uiautomator

5. 工具开发

我们经常会遇到一些需要手工操作、比较繁琐且耗时的重复性工作。这时就可以考虑是否可以通过现有工具或自己编写脚本来代替手工操作。在提升工作效率、效果的同时还可以提升自己的编程水平,何乐而不为?

举例:之前做的一个搜索引擎项目,其中有一个功能是根据歌手的别名搜索歌手,而别名确定需要通过搜索网上的几大音乐网站来确定。大致简单梳理逻辑就会发现这是一个完全可以用Python实现的功能,如下:

示例代码详见:https://github.com/lovesoo/test_demo/tree/master/SearchArtist

6. Q&A

6.1 学习Python过程时遇到问题如何解决?

  1. lib库及函数相关问题,建议查看官方文档或书籍

  2. 其次,百度Google一般基本可以解决问题,另外强烈推荐去stackoverflow搜索提问

6.2 入门后如何提高?

  1. 实践 - 总结 - 提高

  2. 照抄 - 照抄之后的理解 - 重新自己实现

从零使用Python测试。Testing Using Python.的更多相关文章

  1. 用 Python 测试框架简化测试

    用 Python 测试框架简化测试 摘要:本文将向您介绍了三种流行 Python 测试框架(zope.testing,py.test,nose)的基本特性,并讨论新一代的测试风格. 最近出现了行业级的 ...

  2. python测试框架总结

    最流行的有unittest和nose 其他的请看http://wiki.python.org/moin/PythonTes... 中Unit Testing Tools部分 py.test unitt ...

  3. Python零基础学习系列之二--Python介绍及环境搭建

    1-1.Python简介: Python是一种解释型.面向对象.动态数据类型的高级程序设计语言.Python由Guido van Rossum于1989年底发明,第一个公开发行版发行于1991年.像P ...

  4. 收藏清单: python测试框架最全资源汇总

    xUnit frameworks 单元测试框架 frameworks 框架 unittest - python自带的单元测试库,开箱即用 unittest2 - 加强版的单元测试框架,适用于Pytho ...

  5. 转 python测试框架最全资源汇总

    转自: http://www.testclass.net/list/python_list_1/ xUnit frameworks(单元测试框架) frameworks 框架 unittest - p ...

  6. python测试框架&&数据生成&&工具最全资源汇总

    xUnit frameworks 单元测试框架frameworks 框架unittest - python自带的单元测试库,开箱即用unittest2 - 加强版的单元测试框架,适用于Python 2 ...

  7. 2019第一期《python测试开发》课程,10月13号开学

    2019第一期<python测试开发>课程,10月13号开学! 主讲老师:上海-悠悠 上课方式:QQ群视频在线教学,方便交流 本期上课时间:10月13号-12月8号,每周六.周日晚上20: ...

  8. Python测试框架pytest入门基础

    Pytest简介 Pytest is a mature full-featured Python testing tool that helps you write better programs.T ...

  9. Protobuf for Python测试保存和读取文件

    安装pip, setuptools, and wheel 如果已经从python.org,安装啦Python 2 >=2.7.9 or Python 3 >=3.4 ,那么就已经有啦pip ...

随机推荐

  1. lincode.41 最大子数组

    最大子数组   描述 笔记 数据 评测 给定一个整数数组,找到一个具有最大和的子数组,返回其最大和. 注意事项 子数组最少包含一个数 您在真实的面试中是否遇到过这个题? Yes 哪家公司问你的这个题? ...

  2. Hibernate第一篇【介绍Hibernate,简述ORM,快速入门】

    前言 前面已经学过了Struts2框架了,紧接着就是学习Hibernate框架了-本博文主要讲解介绍Hibernate框架,ORM的概念和Hibernate入门 什么是Hibernate框架? Hib ...

  3. MyEclipse 快捷键问题

    解决Myeclipse提示快捷键Alt+/不可用问题 http://blog.163.com/cd-key666/blog/static/648929422011229123826/ 解决Myecli ...

  4. 编译安装Nginx到Linux

    之前安装的H2O不知道为啥,总是崩溃,换Nginx了下载包:http://nginx.org/download/ 配置:./configure --prefix=/usr/local/nginx -- ...

  5. Ansible系列(六):各种变量定义方式和变量引用

    本文目录:1.1 ansible facts1.2 变量引用json数据的方式 1.2.1 引用json字典数据的方式 1.2.2 引用json数组数据的方式 1.2.3 引用facts数据1.3 设 ...

  6. 基于FPGA的腐蚀膨胀算法实现

    本篇文章我要写的是基于的腐蚀膨胀算法实现,腐蚀膨胀是形态学图像处理的基础,,腐蚀在二值图像的基础上做"收缩"或"细化"操作,膨胀在二值图像的基础上做" ...

  7. JVM菜鸟进阶高手之路九(解惑)

    转载请注明原创出处,谢谢! 在第八系列最后有些疑惑的地方,后来还是在我坚持不懈不断打扰笨神,阿飞,ak大神等,终于解决了该问题.第八系列地址:http://www.jianshu.com/p/7f7c ...

  8. 使用cocos2d脚本生成lua绑定

    这几天要老大要求把DragonBones移到cocos2dx 3.0 里边,并且绑定lua使用接口.因为刚学lua,使用的引擎也刚从2.2改为3.0,各种不熟悉,折腾了好几天才弄完,有空了总结一下 这 ...

  9. css预处理语言--让你的css编写更加简单方便

    CSS预处理语言之一-------LESS Less 是一门 CSS 预处理语言,它扩展了 CSS 语言,增加了变量.Mixin.函数等特性,使 CSS 更易维护和扩展. Less 可以运行在 Nod ...

  10. python和C语言混编的几种方式

    Python这些年风头一直很盛,占据了很多领域的位置,Web.大数据.人工智能.运维均有它的身影,甚至图形界面做的也很顺,乃至full-stack这个词语刚出来的时候,似乎就是为了描述它. Pytho ...