如何使用Python和Nosepython实现自动化测试试

python自动化测试(4)-使用第三方python库技术实现
关于测试的方法论,都是建立在之前的文章里面提到的观点:
功能测试不建议做自动化
接口测试性价比最高
接口测试可以做自动化
做好接口自动化,一定要有透过界面看到数据本质的能力
后面所谈到的&测试自动化&也将围绕着&接口自动化&来介绍。
2&&&可测试架构
目前互联网行业流行的&一服务,多客户端&的架构是一种&可测试性好&的架构,架构图如下:
服务器和客户端采用Http(或者WebSocket)的方式进行通讯
数据交换的格式一般是Json(或者XML)
因为下游设备众多,所以服务端接口有很强的稳定性要求
3&&&自动化技术实现
基于如上特点,此系统的接口自动化测试简化表述,就是需要做如下事情:
使用脚本对接口进行Http请求
对返回值解析
按照设计文档进行判定
以项目的方式组织测试脚本形成自动化测试项目
当然,以上纯粹是从技术的角度来阐述问题,如果要和具体的项目结合起来 ,还需要设计不同的步骤和数据来满足不同的业务逻辑需求。
对于如上4个目的,有如下几个框架或者工具可以实现:
一个Http请求库,号称是让Http的请求对人更友好,此框架也确实达到此目的了。
python提供的对json和python数据类型的转化库
pyunit自动化框架提供了大量的assert断言方法来自动化进行数据逻辑判定
作为一个强大的IDE,其在项目组织方面的表现也同样是极其出色的
关于&pyunit&和&pycharm&在本系列文章的上一节里面已经进行了介绍,此处不再重复介绍,本文的重点则是python的两个和http通讯及数据解析相关的库:requests库&和&json库&。
4.1&&&基本介绍
中文官方主页:
http://www.json.org/json-zh.html
关于JSON的使用介绍,目前已经不言而喻。虽然在好多年前,曾经有XML和JSON在&数据编解码&领域平分秋色的说法,但是这么多年过去后,JSON的势头越来越好,而XML的声音则越来越小。
关于JSON的定义,引用官网的原文&:
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。 易于人阅读和编写。同时也易于机器解析和生成。 它基于JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。 这些特性使JSON成为理想的数据交换语言。
目前JSON显然已经成为了互联网上字符型数据交换的标准编解码的中坚力量,作为互联网的开发人员,是很有必要了解它,运用它的。
JSON作为一种字符串的编码和解码规划,是和语言无关的,JSON官网&&上有各种语言的。各种语言(Java/Php/C#/C/C++/Python/R/Ruby等等)都有自己的实现方式,这些也都可以参考
4.2&&&python库
本文的主打语言是Python语言,所展开的内容也是和Python语言相关,在JSON官网&&上提供了如下几种Python语言的JSON库:
The Python Standard Library.
simplejson.
ultrajson.
metamagic.json.
一般情况下,都使用第一个: The Python Standard Library(Python标准库)
官方文档地址:
https://docs.python.org/2/library/json.html
主要的功能就是:JSON编码和解码。
主要函数:
解码函数(装载):将字符流转化为json对象
loads: 载入字符串变量
load:载入文件流
编码函数(卸载):将json对象转化为字符流
dumps:输出到字符串变量
dump:输出到文件流
以上的几个接口容易混淆记忆,引处提供一个辨识技巧:后面带有s结尾(loads,dumps),都是对字符串变量&str&的处理。
一般情况下,loads,dumps使用得最多,因为大部分的程序运算都是内存运算,即主要是对字符串变量进行处理,以下是官网的示例。
字符串解码:
&&& import json
&&& json.loads('["foo", {"bar":["baz", null, 1.0, 2]}]')
[u'foo', {u'bar': [u'baz', None, 1.0, 2]}]
&&& json.loads('"\\"foo\\bar"')
u'"foo\x08ar'
字符串编码:
&&& import json
&&& json.dumps(['foo', {'bar': ('baz', None, 1.0, 2)}])
'["foo", {"bar": ["baz", null, 1.0, 2]}]'
&&& print json.dumps("\"foo\bar")
"\"foo\bar"
&&& print json.dumps(u'\u1234')
关于python标准数据类型和Json的数据类型之间转化的对应关系请见官网&
5&&&requests
5.1&&&基本介绍
官方主页:
http://docs.python-requests.org/en/master/
requests库是一个专门封装的,对用户极其友好的一个Http请求库,其目的就是为了让python下面的Http请求变得更简单,而且它确实也达到它的目的了。
安装方法:
pip install requests
5.2&&&使用示例
目前的一般的Web应用程序都是基于get或者post请求,对于这两种Http请求,requests库都提供了十分优雅的解决方案。
最基本的get请求
# coding:utf-8
import requests
__author__ = 'harmo'
def get_demo():
requests 的get方法演示,不带参数
res = requests.get(url)
print res.url
print res.status_code
if __name__ == '__main__':
get_demo()
运行结果:
带参数的get请求:
&&& payload = {'key1': 'value1', 'key2': 'value2'}
&&& r = requests.get('http://httpbin.org/get', params=payload)
带参数的post请求:
&&& payload = {'key1': 'value1', 'key2': 'value2'}
&&& r = requests.post("http://httpbin.org/post", data=payload)
&&& print(r.text)
"key2": "value2",
"key1": "value1"
6&&&综合示例
再结合一下pyunit的判断库,就可以根据如下流程,做一个最简单的接口自动化测试脚本:
根据文档准备好请求参数
对指定的http接口进行requests请求
对返回的字符串进行json解析
使用pyunit的assert函数进行判定
生成相应的测试报告,导出或者和信息系统对接
下面是对一个用户登录的接口进行测试,按照设计文档,此接口如果登录成功,则返回的字符格式是:
"code":200,
"token": "382998dafac535be0d1502"
如果登录失败,则返回如下值:
{"code":403,"msg":"forbidden","data":""}
则相应的测试脚本代码为
def test_admin_user_login(self):
测试用户登录
url = "%s%s" % (self.base_url, '/task/admin-user-login/')
params = dict(
user='admin',
password='222222',
res = requests.post(url, data=params)
print res.text
res_dict = json.loads(res.text)
self.assertEqual(res_dict['code'], 200)
运行结果:
通过上面运行结果的提示,我们可以看出,指定的数据输入经过服务端接口后,并没有返回我们期望的值。这个时候,我们就可以排查是不是服务端的接口出问题了,或者是谁修改了测试数据,导致结果不符合预期。
本小部分的内容,主要是讲如何利用&requests库&和&json库&来轻松构建Http接口自动化测试的项目。基本上如果掌握了如上技能,测试开发人员就具备了自动化脚本开发的能力了,后面主就是结合具体的项目需求来进行逻辑设计和数据准备了。
只需要这一步,你就迈入了自动化测试之门了,恭喜。
聚沙成塔,无数的上文提到的接口自动化测试脚本,就可以汇集成一个自动化化测试项目,而此自动化测试项目则是 持续集成,快速迭代必备条件,最后作为测试人员也能成为整个项目推进中很重要的一环了。
欢迎以学习交流为目的读者随意转载,但是请&【注明出处】
如果文章对您有启发,可以点击博客右下角的按钮进行&【推荐】
阅读(...) 评论()The page is temporarily unavailable
nginx error!
The page you are looking for is temporarily unavailable.
Please try again later.
Website Administrator
Something has triggered an error on your
This is the default error page for
nginx that is distributed with
It is located
/usr/share/nginx/html/50x.html
You should customize this error page for your own
site or edit the error_page directive in
the nginx configuration file
/etc/nginx/nginx.conf.使用Python和Nose实现移动应用的自动化测试
使用Python和Nose实现移动应用的自动化测试
  采用Appium进行自动化的功能性测试最酷的一点是,你可以使用具有最适合你的测试工具的任何一门语言来写你的测试代码。大家选择最多的一个测试编程语言就是Python。 使用Appium和Python为iOS和Android应用编写测试代码非常容易。
  在这篇博文中我们将详细讲解使用Appium下的Python编写的测试的例子代码对一个iOS的样例应用进行测试所涉及的各个步骤,而对Android应用进行测试所需的步骤与此非常类似。
  开始,先自并clone Appium,然后按照安装指南,在你的机器上安装好Appium。
  我还需要安装Appium的所有依赖并对样例apps进行编译。在Appium的工作目录下运行下列命令即可完成此任务:
$ ./reset.sh --ios
  编译完成后,就可以运行下面的命令启动Appium了:
$ grunt appium
  现在,Appium已经运行起来了,然后就切换当前目录到sample-code/examples/python。接着使用pip命令安装所有依赖库(如果不是在虚拟环境virtualenv之下,你就需要使用sudo命令):
$ pip install -r requirements.txt
  接下来运行样例测试:
$ nosetests simple.py
  既然安装完所需软件并运行了测试代码,大致了解了Appium的工作过程,现在让我们进一步详细看看刚才运行的样例测试代码。该测试先是启动了样例应用,然后在几个输入框中填写了一些内容,最后对运行结果和所期望的结果进行了比对。首先,我们创建了测试类及其setUp方法:
classTestSequenceFunctions(unittest.TestCase):&&&& defsetUp(self):&&&&&&& app=os.path.join(os.path.dirname(__file__),&&&&&&&&&&&&&&&&&&&&&&&&&& '../../apps/TestApp/build/Release-iphonesimulator',&&&&&&&&&&&&&&&&&&&&&&&&&& 'TestApp.app')&&&&&&& app=os.path.abspath(app)&&&&&&& self.driver=webdriver.Remote(&&&&&&&&&&& command_executor='',&&&&&&&&&&& desired_capabilities={&&&&&&&&&&&&&&& 'browserName':'iOS',&&&&&&&&&&&&&&& 'platform':'Mac',&&&&&&&&&&&&&&& 'version':'6.0',&&&&&&&&&&&&&&& 'app': app&&&&&&&&&&& })&&&&&&& self._values=[]
  “desired_capabilities”参数用来指定运行平台(iOS 6.0)以及我们想测试的应用。接下来我们还添加了一个tearDown方法,在每个测试完成后发送了退出命令:
deftearDown(self):&&& self.driver.quit()
  最后,我们定义了用于填写form的辅助方法和主测试方法:
def_populate(self):&&& # populate text fields with two random number&&& elems=self.driver.find_elements_by_tag_name('textField')&&& foreleminelems:&&&&&&& rndNum=randint(0,10)&&&&&&& elem.send_keys(rndNum)&&&&&&& self._values.append(rndNum)&deftest_ui_computation(self):&&& # populate text fields with values&&& self._populate()&&& # trigger computation by using the button&&& buttons=self.driver.find_elements_by_tag_name("button")&&& buttons[0].click()&&& # is sum equal ?&&& texts=self.driver.find_elements_by_tag_name("staticText")&&& self.assertEqual(int(texts[0].text),self._values[0]+self._values[1])
  就是这样啦!Appium的样例测试代码中还有许多Python的例子。如果你对使用Nose和Python来运行Appium测试有任何问题或看法,烦请告知。
H3C认证Java认证Oracle认证
基础英语软考英语项目管理英语职场英语
.NETPowerBuilderWeb开发游戏开发Perl
二级模拟试题一级模拟试题一级考试经验四级考试资料
港口与航道工程建设工程法规及相关知识建设工程经济考试大纲矿业工程市政公用工程通信与广电工程
操作系统汇编语言计算机系统结构人工智能数据库系统微机与接口
软件测试软件外包系统分析与建模敏捷开发
法律法规历年试题软考英语网络管理员系统架构设计师信息系统监理师
高级通信工程师考试大纲设备环境综合能力
路由技术网络存储无线网络网络设备
CPMP考试prince2认证项目范围管理项目配置管理项目管理案例项目经理项目干系人管理
Powerpoint教程WPS教程
电子政务客户关系管理首席信息官办公自动化大数据
职称考试题目
就业指导签约违约职业测评
招生信息考研政治
网络安全安全设置工具使用手机安全
3DMax教程Flash教程CorelDraw教程Director教程
Dreamwaver教程HTML教程网站策划网站运营Frontpage教程
生物识别传感器物联网传输层物联网前沿技术物联网案例分析
互联网电信IT业界IT生活
Java核心技术J2ME教程
Linux系统管理Linux编程Linux安全AIX教程
Windows系统管理Windows教程Windows网络管理Windows故障
组织运营财务资本
视频播放文件压缩杀毒软件输入法微博
数据库开发Sybase数据库Informix数据库
&&&&&&&&&&&&&&&
希赛网 版权所有 & &&工具类服务
编辑部专用服务
作者专用服务
基于Android操作系统的自动化测试系统的研究与实现
近两年,Android操作系统的手持设备,包括手机、平板电脑等,逐步占领了全球各大智能终端市场,成为IPhone、IPad最有力的竞争对手。越来越多的设备厂商与软件公司都加入到了Android的行列。  
另一方面,随着软件工程的发展,软件测试的难度和复杂度也在逐渐地增加。传统的手工测试由于耗费时间长、覆盖率低、风险高等缺陷已经无法满足测试需求,自动化测试技术是现阶段软件测试领域的一个热点研究方向。  
Android系统的开源特性为自动化测试提供了更大的便利性。目前国内外已有一些自动化测试工具在使用,但都存在着一定的局限性。本文的研究目标就是开发一套针对Android设备的功能完善的自动化测试系统。  
本文的主要内容包括:  
(1)扩展Android的Instrumentation测试类,编写Instrument测试方法;  
(2)基于采用Python语言的单元测试框架-PyUnit开发新型自动化测试框架,实现在一个测试用例中跨多个应用程序,甚至是多台设备的目标;  
(3)扩展IBM的自动化测试框架STAF/STAX,开发自动化测试的管理工具,控制连接了多台Android设备的多台电脑并行地执行自动化测试用例。同时可通过该工具制定测试方案,分配测试用例,监控测试过程,以及在测试完成之后自动生成测试结果报告。
学科专业:
授予学位:
学位授予单位:
导师姓名:
学位年度:
本文读者也读过
相关检索词
万方数据知识服务平台--国家科技支撑计划资助项目(编号:2006BAH03B01)(C)北京万方数据股份有限公司
万方数据电子出版社}

我要回帖

更多关于 python自动化测试教程 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信