接口自动化笔记 2019-06-16

接口第一章:

接口业务方向

  接口规范:http://open.weibo.com/wiki/2/comments/by_me

  接口管理平台工具:

  http://yapi.demo.qunar.com/

  https://www.eolinker.com/

接口测试框架选择

业务:postman jmeter

业务自动化:python robotframwork(备注:只支持python 2.8 3以上不支持)  Python 基于requests(搭建一套数据分离框架)

            java httpclient  java+maven+testng+rest-assured搭建的一套自动化框架

charles安装配置:

  https://blog.csdn.net/longxingzhiwen/article/details/70313773

  1.设置端口号

  2.安装证书 chls.pro/ssl  charlesproxy.com/getssl

抓接口乱码处理

  https://www.cnblogs.com/itcqx/p/6529439.html

  http://www.paincker.com/charles-charset-incorrect

接口写用例:

  查询选车列表:https://selectcar.yiche.com/selectcarforapp?mid=7&s=4&page=1&pagesize=20&cityId=201

              mid是品牌6 7 8 9

  page多少页

  pagesize这一页显示多少条

charles抓包步骤:

第一步:  cmd-ipconfig找到IP,手机设置IP和端口8888

第二步:手机打开浏览器浏览器装入装入证书手机浏览器装证书两种方式chls.pro/ssl  charlesproxy.com/getssl(注意事项:1.如果你的手机自动浏览器装不上证书,可以下载一个chrome浏览器去安装信任(iOS-通用-信任) 2.如果装后抓不到一定要关闭防火墙)

第三步:charles help->ssl proxying->install下一步下一步安装

Python自动化方向:

  了解熟悉requests: https://2.python-requests.org//zh_CN/latest/user/quickstart.html

  安装方法:http://www.lfd.uci.edu/~gohlke/pythonlibs  pip install requests

  公共接口地址:https://blog.csdn.net/c__chao/article/details/78573737


python接口第二章:

1.字典转化JSON(json.dumps()  json转化为字典(json.loads())

2.unittest官方文档

https://docs.python.org/2/library/unittest.html

汉化精简版:

http://www.testertechnology.com/posts/detail?id=661


第一个知识点:

#classmethod 修饰符对应的函数不需要实例化,不需要 self 参数,但第一个参数需要是表示自身类的 cls 参数

classmethod.py 中

#@classmethod #方法调用不用去实例化

#① setup(): 每个测试函数运行前运行

#② teardown(): 每个测试函数运行完后执行

#③ setUpClass(): 必须使用 @ classmethod装饰器, 所有test运行前运行一次

#④ tearDownClass(): 必须使用 @ classmethod装饰器, 所有test运行完后运行一次

第二个知识点:

parameterized参数化: 安装 https://pypi.org/project/parameterized/

****************************************************

安装:pip install parameterized

导入:from parameterized import parameterized

*****parameterized参数化运行的方式,必须是普通方式运行,如果用unittest方式运行会报错

安装包的方式:

1.cmd中-pip install  parameterized

2.第二种安装方式:pycharm类中先引入对应的包名进入default settings中->添加输入包名安装如果按照过程中失败,那么使用下面方法

Pycharm安装package出现报错:module 'pip' has no attribute 'main'解决方案如下:

https://www.cnblogs.com/Fordestiny/p/8901100.html

如果你们在pycharm中project interpreter中下载包提示erro一直下载失败,那么久需要进入 helpers/packaging_tool.py文件找到do_install修改如下代码:

def do_install(pkgs):

try:

# import pip

try:

from pip._internal import main

except Exception:

from pip import main

except ImportError:

error_no_pip()

return main(['install'] + pkgs)

def do_uninstall(pkgs):

try:

# import pip

try:

from pip._internal import main

except Exception:

from pip import main

except ImportError:

error_no_pip()

return main(['uninstall', '-y'] + pkgs)

**********************************************************************************

安装:pip install parameterized

导入:from parameterized import parameterized

使用方法:parmeterdemo1.py

如果运行控制台出现此类错误,TypeError: don't know how to make test from: None 说明运行方法不能使用unittest方式运行

要使用普通方法运行

3. pycharm类中先引入对应的包名,页面左上角有个小灯泡图标安装选择install xxx包名

第三个知识点:

unittest断言归纳:http://www.testertechnology.com/posts/detail?id=663 tclogin6

代码注释:#ctrl+/ 注释和取消注释

第四个知识点:

logging使用说明:

logging有什么作用:主要打印一些日志信息或者出错信息,方便排查问题(同学们只需要掌握,会使用,不需要会写,这个其实就是公共的方法)

logging.basicConfig(level=logging.DEBUG, format=LOG_FORMAT, datefmt=DATE_FORMAT)--控制台打印日志(basicConfig)方法

http://www.testertechnology.com/posts/detail?id=664

官网:https://docs.python.org/3/library/logging.html https://www.cnblogs.com/liujiacai/p/7804848.html

http://www.testertechnology.com/user/home?id=87

*********************************************************************

第四章 python 参数化结合怎么读取excel数据

xlrd模块:

Python的三方库xlrd用于对excel文件进行读取,可以是“.xls”或“.xlsx”格式(旧版本可能不支持“.xlsx”)。

下载安装:https://pypi.org/project/xlrd/#files,或者使用pip安装 “pip install xlrd”

API文档:https://xlrd.readthedocs.io/en/latest/api.html

xlrd常用的方法:

work_book = xlrd.open_workbook(filename):打开指定路径的excel文件,返回excel处理对象,但无法打开不存在的文件。

work_book.nsheets:返回excel中的sheet个数。

work_book.sheets():加载并返回excel中的所有sheet对象组成的列表。

work_book.sheet_by_index(sheetx):返回对应索引的sheet对象,索引范围为range(work_book.nsheets)。

work_book.sheet_by_name(sheet_name):返回对应sheet名称的sheet对象。

work_book.sheet_names():返回excel中所有sheet名称组成的列表。

sheet.book:sheet所属的work_book。

sheet.name:sheet的名称。

sheet.nrows:sheet中的行数。

sheet.ncols:sheet中的列数。

sheet.row(rowx):返回对应行的cell对象组成的列表。

sheet.row_slice(rowx, start_colx=0, end_colx=None):返回对应行的cell对象组成的列表,也自定义切片获取行的cell对象列表。

sheet.col(colx):返回对应列的cell对象组成的列表。

sheet.col_slice(colx, start_rowx=0, end_rowx=None):返回对应列的cell对象组成的列表,也自定义切片获取行的cell对象列表。

sheet.cell(rowx, colx):返回对应单元格的cell对象。

sheet.cell_value(rowx, colx):返回对应单元格的值。

sheet.row_len(rowx):返回对应行的有效单元格数。

sheet.get_rows():返回一个行的迭代器,每次迭代返回一个cell对象组成的列表,即这一行的cell对象列表。

sheet.row_values(rowx, start_colx=0, end_colx=None):返回对应行的值的列表,也可以自定义切片获取某些值。

sheet.col_values(colx, start_rowx=0, end_rowx=None):返回对应列的值的列表,也可以自定义切片获取某些值。

sheet.cell(rowx, colx).value:返回对应单元格的值文档。


接口第四章:xml和config.ini配置读取

作用:1.xml提高接口灵活度参数可随时配置(xml组装:www.baidu.com/backend/student/unauth/login) 

      2.config切换线上线下环境方便

xml:

#Python有三种方法解析XML,SAX,DOM,以及ElementTree

sax:解析器主要解析xml

dom对象结构:

#登录接口

    <url name="studentLogin">

        <group>student</group>

        <module>unauth</module>

        <action>login</action>

    </url>

#ElementTree 例如:url下面->group->module->action 节点  统称为elementtree节点

#as  修饰定义别名

xml:节点可以随意去配置,主要满足你的业务需求即可

xml必须导入该方法:from xml.etree import ElementTree as ElementTree

# 解析xml文档

    tree = ElementTree.parse(url_path)

# Element.iter(tag=None):遍历该Element所有后代,也可以指定tag进行遍历寻找。

# Element.findall(path):查找当前元素下url或path能够匹配的直系节点。

# Element.find(path):查找当前元素下tag或path能够匹配的首个直系节点。

# Element.text: 获取当前元素的text值。

# Element.get(key, default=None):获取元素指定key对应的属性值,如果没有该属性,则返回default值

config.ini 配置

1.创建一个config配置文件,格式如下:

[HTTP]

scheme = http

baseurl =http://xingmengwuhen.test.com

port = 8080

timeout = 10

2.封装一个读取配置文件的公共方法

import configparser

#1.获取配置文件路径

  proDir = os.path.split(os.path.realpath(__file__))[0]

  configPath = os.path.join(proDir, "config.ini")

#2.打开config.ini读取配置read()

  fd = open(configPath)

  data = fd.read()

#3.生成conf对象

  self.cf = configparser.ConfigParser();

#4.载入配置文件

self.cf.read(configPath)

#5.获取对应配置信息

def get_http(self, name):

self.cf.get 获取 [HTTP],‘name’

#6.from  config import  readconfig

#调用方法

readcon=readconfig.Read()

7.读取

host=readcon.get_http("port")

baseurl=readcon.get_http("baseurl")

详细信息:http://zixuephp.net/article-431.html

综合练习:

xml+config+json格式接口请求

接口:

config:http://api-shuangshi.tengyue360.com+xml:/backend/student/unauth/login

http://api-shuangshi.tengyue360.com/backend/student/unauth/login

json格式请求:

{

"phone": "14050000000",

"password": "e10adc3949ba59abbe56e057f20f883e",

"messageCode": "",

"loginType": 1,

    "timestamp": ""

}

**************

节点获取:

例如:

{

'errno': 200,

'error': '操作成功',

'data': {

'id': '1027',

'name': '测试'

},

'token': None

}

aa=res.json();

print(aa['error'])

print(aa['data']['id'])

**

https://selectcar.yiche.com/selectcarforapp?mid=7&s=4&page=1&pagesize=20&cityId=201

{

    "status": 1,

    "message": "ok",

    "data": {

        "count": 26,

        "carNumber": 236,

        "resList": [

            {

                "masterId": 7,

                "serialID": 1879,

                "name": "卡罗拉",

                "allSpell": "kaluola",

节点获取:

cc=res.json();(备注:JSON.data.resList[0].name)

print(cc['data']['resList'][0]['name'])

第五章:Python自动化框架搭建

好处:1.采用数据分离,目录结构分层后期好维护

      2.线上线下环境随意切换灵活

  3.可以实现多接口使用EXCEL操作

  4.持续集成比较清晰,简单

  5.可以持续集成方便报告查看

目录 结构:

common:存放一些公共通用的方法

result:执行过程中生成的文件夹,里面存放每次测试的结果

testCase:用于存放具体的测试case

testFile:存放测试过程中用到的文件,包括上传的文件,测试用例

caselist:txt文件,配置每次执行的case名称

config:配置一些常量,例如数据库的相关信息,接口的相关信息参数等

readConfig: 用于读取config配置文件中的内容

runAll:用于执行case

_init_.py 区分文件夹导入的包

token 是什么?是一个令牌,一种身份的验证

############ hTMLTETRUNNER报告结果,加载之后就让显示接口部信息在

  <script>

  window.onload=function(){

      showCase(2)

    }

</script>

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,009评论 5 474
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,808评论 2 378
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 148,891评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,283评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,285评论 5 363
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,409评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,809评论 3 393
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,487评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,680评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,499评论 2 318
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,548评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,268评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,815评论 3 304
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,872评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,102评论 1 258
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,683评论 2 348
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,253评论 2 341

推荐阅读更多精彩内容

  • python学习笔记 声明:学习笔记主要是根据廖雪峰官方网站python学习学习的,另外根据自己平时的积累进行修正...
    renyangfar阅读 3,016评论 0 10
  • 使用首先需要了解他的工作原理 1.POI结构与常用类 (1)创建Workbook和Sheet (2)创建单元格 (...
    长城ol阅读 8,396评论 2 25
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,081评论 1 32
  • ParseExcel类 #encoding=utf-8 import openpyxl from openpyxl...
    公子小白123阅读 576评论 0 0
  • 12年前,来自偏僻乡村的我,在几乎没接触过电脑的情况下,稀里糊涂勾选了大学计算机科学与技术专业,于是在这个男女10...
    土豆南瓜阅读 3,831评论 64 51