点击标题下「蓝色微信名」可快速关注

坚持的是分享,搬运的是知识,图的是大家的进步,没有收费的培训,没有虚度的吹水,喜欢就关注、转发(免费帮助更多伙伴)等来交流,想了解的知识请留言,给你带来更多价值,是我们期待的方向,有更多兴趣的欢迎切磋,我们微信订阅号,联系方式如下:

更多书籍,敬请期待

背景说明

这是python系列的第6课了,不知道前面的知识大家掌握的怎么样,是否有感觉到已经接触到了接口测试的框架了呢?话不多说,接着练习。

1作业内容

题目5:写一个网络请求,通过传入CityName  和 CountryName,获取天气情况URL:http://www.webservicex.net/globalweather.asmx/GetWeather

参数:CityName  和 CountryName

方法:post

要求:

1、参数的值从excel中获取(两列),实际值和结果反填写到对应的行的后面

2、每一行是一个测试用例

3、期望值,自己填写,并判断期望值和实际值是否相等,相等则结果为pass,否则为failed

4、填写每个请求的响应时间

2相关知识点

1、处理xlsx文件的库

http://www.python-excel.org/有列举,选用了第一种openpyxl,直接使用pipinstall安装。

Working with Excel Files in Python

This site contains pointers to the best  information available about working with Excel files

in the Python programming language.

The Packages

There  are python packages available to work with Excel files that will run on any  Python

platform  and that do not require either Windows or Excel to be used. They are fast,  reliable

and  open source:

openpyxl

The  recommended package for reading and writing Excel 2010 files (ie: .xlsx)

Download | Documentation | Bitbucket

xlsxwriter

An  alternative package for writing data, formatting information and, in  particular, charts in

the  Excel 2010 format (ie: .xlsx)

Download | Documentation | GitHub
xlrd

This  package is for reading data and formatting information from older Excel files  (ie: .xls)

Download | Documentation | GitHub

xlwt

This  package is for writing data and formatting information to older Excel  files (ie: .xls)

Download | Documentation | Examples | GitHub

xlutils

This  package collects utilities that require both xlrd and xlwt, including the ability to copy

and  modify or filter existing excel files.

NB: In  general, these use cases are now covered by openpyxl!

Download | Documentation | GitHub

2、openpyxl库基本使用

打开表格

table = openpyxl.load_workbook(filename)

获取第一个sheet名

sheetname =table.get_sheet_names()[0].encode('ascii')

获得某个位置的值

Value = table[sheetname][XX].value.encode('ascii')

设置/修改某个位置的值

table[sheetname][XX].value = setvalue

保存表格

table.save(filename)

基本上就使用这几个命令来读取修改表格,其中位置是通过循环读取当前row拼接而成。

3、处理请求返回的xml

建立请求是之前的内容,使用urllib2进行请求,将传递的参数用urllib.urlencode进行编码。

req =urllib2.Request(url)

data = urllib.urlencode(data)

response= urllib2.urlopen(url, data)

这里返回的xml如下

<?xml version="1.0"encoding="utf-8"?>

<stringxmlns="http://www.webserviceX.NET">&lt;?xmlversion="1.0" encoding="utf-16"?&gt;

&lt;CurrentWeather&gt;

&lt;Location&gt;Beijing, China (ZBAA) 39-56N 116-17E55M&lt;/Location&gt;

&lt;Time&gt;Mar 15, 2016 - 10:00 PM EDT / 2016.03.16 0200UTC&lt;/Time&gt;

&lt;Wind&gt; from the ENE (060 degrees) at 7 MPH (6KT):0&lt;/Wind&gt;

&lt;Visibility&gt; 1 mile(s):0&lt;/Visibility&gt;

&lt;Temperature&gt; 48 F (9 C)&lt;/Temperature&gt;

&lt;DewPoint&gt; 35 F (2 C)&lt;/DewPoint&gt;

&lt;RelativeHumidity&gt; 61%&lt;/RelativeHumidity&gt;

&lt;Pressure&gt; 30.06 in. Hg (1018hPa)&lt;/Pressure&gt;

&lt;Status&gt;Success&lt;/Status&gt;

&lt;/CurrentWeather&gt;</string>

是在一个xml里头又嵌套了一层。

处理方法想了两种:

1. 去掉一个头

先使用xml.sax.saxutils. unescape来处理html编码问题

再使用正则去掉第二行内容和末尾的</string>

再传给xml.dom.minidom.parseString格式化成为xml对象

2. 使用xml.dom.minidom.parseString两次

第一次将返回内容格式化后,取string xmlns这个child再格式化一次

因为xml.dom.minidom.parseString处理编码声明的UTF-16报错,还需做个替换,将其修改为UTF-8。使用方法1或2得到的xml对象用之前学习的方法getElementsByTagName取得需要的tag值。请求响应时间使用函数time()取了两次做减法来取得。

4、循环处理

通过openpyxl库的方法获取整个xlsx表的行数,将循环范围设定为从第二行到文件的最后一行。每读取一行,读取其中的参数,建立请求取得结果,进行结果对比,修改该行相关结果值。最后进行保存。

3后语

参考例子,请加入QQ群获取, 到此,我们第6课,第5次作业,需要的知识点和参考的样例全部奉献出来了,action起来!

推荐的文章

初探接口测试框架--python系列1

初探接口测试框架--python系列2

初探接口测试框架--python系列3

初探接口测试框架--python系列4

Fiddler录制jmeter脚本,干货分享

jmeter接口自动化,你敢想,我敢玩

接口测试实战--SoapUI Pro5.1.2

测试路上,聊聊思路,谈谈手段

温故而知识--历史清单

jenkins系列1--自动打tag

↓↓↓ 点击"阅读原文" 【查看更多信息】

初探接口测试框架--python系列6的更多相关文章

  1. 初探接口测试框架--python系列7

    点击标题下「蓝色微信名」可快速关注 坚持的是分享,搬运的是知识,图的是大家的进步,没有收费的培训,没有虚度的吹水,喜欢就关注.转发(免费帮助更多伙伴)等来交流,想了解的知识请留言,给你带来更多价值,是 ...

  2. 初探接口测试框架--python系列2

    点击标题下「蓝色微信名」可快速关注 坚持的是分享,搬运的是知识,图的是大家的进步,没有收费的培训,没有虚度的吹水,喜欢就关注.转发(免费帮助更多伙伴)等来交流,想了解的知识请留言,给你带来更多价值,是 ...

  3. 初探接口测试框架--python系列3

    点击标题下「微信」可快速关注 坚持的是分享,搬运的是知识,图的是大家的进步,没有收费的培训,没有虚度的吹水,喜欢就关注.转发(免费帮助更多伙伴)等来交流,想了解的知识请留言,给你带来更多价值,是我们期 ...

  4. 初探接口测试框架--python系列4

    点击标题下「蓝色微信名」可快速关注 坚持的是分享,搬运的是知识,图的是大家的进步,没有收费的培训,没有虚度的吹水,喜欢就关注.转发(免费帮助更多伙伴)等来交流,想了解的知识请留言,给你带来更多价值,是 ...

  5. 初探接口测试框架--python系列5

    点击标题下「蓝色微信名」可快速关注 坚持的是分享,搬运的是知识,图的是大家的进步,没有收费的培训,没有虚度的吹水,喜欢就关注.转发(免费帮助更多伙伴)等来交流,想了解的知识请留言,给你带来更多价值,是 ...

  6. 初探接口测试框架--python系列1

    点击标题下「蓝色微信名」可快速关注 坚持的是分享,搬运的是知识,图的是大家的进步,没有收费的培训,没有虚度的吹水,喜欢就关注.转发(免费帮助更多伙伴)等来交流,想了解的知识请留言,给你带来更多价值,是 ...

  7. http接口测试框架-python

    简单分解一下 接口测试框架设计: 主入口 -> 遍历接口/用例 -> 发送请求+接收响应 ->结果的对比 -> 生成报告 ->发送email 分成几大类:主入口的py文件 ...

  8. Macaca 自动化框架 [Python 系列]

    介绍 Macaca是一套完整的自动化测试解决方案,基于node.js开发.由阿里巴巴公司开源: 地址:http://macacajs.github.io/macaca/ 特点: 同时支持PC端和移动端 ...

  9. 【转】基于Python的接口测试框架实例

    下面小编就为大家带来一篇基于Python的接口测试框架实例.小编觉得挺不错的,现在就分享给大家,也给大家做个参考.一起跟随小编过来看看吧   背景 最近公司在做消息推送,那么自然就会产生很多接口,测试 ...

随机推荐

  1. java书箱

    http://www.blogjava.net/kuuyee/archive/2013/06/03/400084.html http://www.blogjava.net/cheneyfree/

  2. HackerRank "Components in a graph"

    Regular Union-Find practice one. #include <cmath> #include <cstdio> #include <climits ...

  3. Python基础教程【读书笔记】 - 2016/7/24

    希望通过博客园持续的更新,分享和记录Python基础知识到高级应用的点点滴滴! 第九波:第9章  魔法方法.属性和迭代器  在Python中,有的名称会在前面和后面都加上两个下划线,这种写法很特别.已 ...

  4. bzoj1006 神奇的国度

    Description K国是一个热衷三角形的国度,连人的交往也只喜欢三角原则.他们认为三角关系:即AB相互认识,BC相互认识,CA相互认识,是简洁高效的.为了巩固三角关系,K国禁止四边关系,五边关系 ...

  5. 警告: [SetContextPropertiesRule]{Context} Setting property 'source' to 'org.eclipse.jst.jee.server:20160928' did not find a matching property

    控制台看到如下警告: 症状原因: 在eclipse配置好的tomcat服务器上双击,打开tomcat服务器的配置界面.按如下操作配置服务器:在Server Options勾上的选项,会在你部署web项 ...

  6. [rootfs]Yaffs2

    1. busybox: sudo apt-get install busybox(v1.21.1) 2. mkyaffs2image: http://www.aleph1.co.uk/gitweb/? ...

  7. 进程间通信IPC之--共享内存

    每个进程各自有不同的用户地址空间,任何一个进 程的全局变量在另一个进程中都看不到,所以进程之间要交换数据必须通过内核,在内核中开辟一块缓冲 区,进程1把数据从用户空间拷到内核缓冲区,进程2再从内核缓冲 ...

  8. 黄聪:wordpress更新失败‘C:\Windows\TEMP/wordpress.tmp’,更换临时保存路径的解决办法

    1.如果可劲进入远程桌面,则给C:\WINDOWS\TEMP目录设置IIS访问权限. 2.虚拟机的方法:首先用FTP软件在网页空间wp-content目录中新建一个[tmp]目录,然后在wp-conf ...

  9. 黄聪:WordPress 多站点建站教程(七):多站点函数

    1.get_blog_details(获取子站点信息) 返回多站点博客信息即wp_blogs表. //显示站点名称 $blog_details = get_blog_details(1); echo ...

  10. Win8 安装驱动

    从微软的网站上面下载了一些驱动,发现竟然没有Setup或者Install安装程序,囧. 快速查了一下,直接在inf文件右击的菜单里面选择“安装”即可.突然有点out的感觉. 参考:http://dig ...