RobotFramework HTTP接口实战项目框架设计

一、接口测试项目架构设计(设计出一套有效完善的接口测试用例是项目框架设计的重点)

1、创建接口测试项目名称,定义一般格式为:公司名称_框架名_测试类别

RIDE-->File-->New Project

我创建的项目名称:Baidu_RobotFramework_API

2、创建二级目录,一般推荐两个类别目录进行划分,定义格式一般为:Interface_Code(脚本层:用于存放不同业务条线的测试用例)和Resources(资源层:包括Business业务资源层、Public公共资源层、Lib第三方类库)

RIDE-->Baidu_RobotFramework_API右键-->New Directory

我创建的二级目录名称:Interface_Code和Resources

3、在Resources目录下创建三个类别目录,定义格式一般为:Business(业务资源层)、Public(公共资源层)、Lib(第三方类库)

业务资源层和公共资源层的区别:业务资源层适用于自己业务条线下产品使用,而公共资源层适用于所有业务条线下产品共同使用。

RIDE-->Baidu_RobotFramework_API-->Resources右键-->New Directory

我创建的三级目录名称:Business、Public、Lib

二、项目业务分层设计

1、创建产品业务条线

RIDE-->Baidu_RobotFramework_API-->Interface_Code右键-->New Directory

我创建的产品业务条线名称:Baiduproduct

2、创建但接口的功能测试和基于业务的接口组合测试

RIDE-->Baidu_RobotFramework_API-->Interface_Code-->Baiduproduct右键-->New Directory

我创建的单接口测试目录和业务场景接口测试目录名称:Single API和Business API

3、在Resources-->Business业务资源目录下,创建业务线资源文件,建议业务线资源文件名称与业务线目录名称保持一致

RIDE-->Baidu_RobotFramework_API-->Resources-->Business右键-->New Resources

创建我的业务线资源文件名称:Baiduproduct

4、在Baiduproduct-->Single API下创建测试套件,RobotFramework框架中一般推荐一类接口对应一个测试套件

RIDE-->Baidu_RobotFramework_API-->Interface_Code-->Baiduproduc-->Single API右键-->New Suite

我创建的测试套件名称:Search

5、在Single API-->Search下创建测试用例

RIDE-->Baidu_RobotFramework_API-->Interface_Code-->Baiduproduc-->Single API--Search右键-->New Suite

我创建的测试用例名称:search int和search string

三、项目公共请求方法设计

对请求方法设计之前先来思考下,用Postman这类HTTP测试工具来做接口测试时时如何实现的?

(1)组装接口请求参数;

(2)发起请求;

(3)判断请求是否符合预期;

通过postman发起HTTP请求,只需要单击一下发送按钮,就能将组装好的参数发送给服务器并将服务器返回的接口相应数据展示出来,在于Postman发送按钮对应内部逻辑实现中已经帮助使用者封装好了底层HTTP请求调用的方法。而RobotFramework框架本身没有提供现成的HTTP请求关键字,需要我们根据实际项目的接口请求来自行实现。

下面我们就来自己实现HTTP请求的调用。

1、因为所有开展接口测试的产品线都会用到HTTP请求的调用方法,所以划分到Public公共资源层目录下,在Resources-->Public目录下新建http_request公共请求资源文件

RIDE-->Baidu_RobotFramework_API-->Resources-->public右键-->New Resources

我创建的公共请求资源文件名称:http_request.robot

2、在创建GET和POST请求关键字前,先在http_request资源文件中导入RequestsLibrary三方库(之前的文章写过安装三方依赖库 https://www.jianshu.com/p/f661ac39087e,不是robframework内置的标准库都需要先下载安装好三方依赖库再手工导入)

(1)导入RequestsLibrary库:封装HTTP关键字时需要用到此库,主要用来实现底层模拟发送发送GET、POST请求(之前文章写过如何手工导入内置标准库https://www.jianshu.com/p/b232baeea7ff,这次手工导入三方依赖库步骤一样);

(2)导入HttpLibrary.HTTP库:使用该库的Json关键字,对JSON结构体进行操作会很方便,主要用来处理HTTP返回数据,如库中有Get Json Value关键字,可以从JSON结构体中逐层取数据值;

⚠️两个库都导入成功后字体是黑色!

⚠️我的RobotFramework是最新版本3.1,与RobotFramework3.1之前版本之间出现不兼容问题,导致在手工导入HttpLibrary.HTTP库时出现了问题,文章尾部我有说明如何解决。

四、Robotframework导入HttpLibrary.HTTP库报错问题解决方案如下

报错内容:

FAILED HttpLibrary.HTTP Importing test library 'HttpLibrary.HTTP' failed: SyntaxError: invalid syntax (__init__.py, line 16)

原因:

RobotFramework版本之间不兼容

解决方案:

HttpLibrary.HTTP库需要依赖另外两个库:livetest库和simplejson库,在pip install robotframework-httplibrary时不会自动安装这两个库,需要手动安装。

1、安装livetest库

(1)下载地址:https://pypi.org/project/livetest/#files

(2)下载完成后解压到/usr/local/lib/python3.7/site-packages目录下(site-packages目录下是放RobotFramework内置标准库和三方拓展库的地方)

(3)修改/usr/local/lib/python3.7/site-packages/livetest-0.5/livetest/__init__.py 文件

a、将import httplib修改为import http.client as httplib;

b、将import urlparse修改为import urllib.parse;

c、将rom Cookie import BaseCookie, CookieError修改为 import http.cookiejar

d、将CookieError, e修改为CookieError as e

(4)修改/usr/local/lib/python3.7/site-packages/livetest-0.5/setup.py文件

a、将long_description=file('README.rst').read() 修改为long_description=open('README.rst').read()

b、将version=livetest.__version__ 修改为 version='0.5'

c、将author_email=livetest.__author__ 修改为 author_email='[email protected]'

d、在终端命令行中切换路径到/usr/local/lib/python3.7/site-packages/livetest-0.5/,执行 python setup.py install,安装成功。

(5)修改/usr/local/lib/python3.7/site-packages/HttpLibrary/__init__.py 文件

a、将from urlparse import urlparse修改为from urllib import urlparse

b、将ValueError, e修改为ValueError as e(共有两处,都要修改)

2、安装simplejson库

(1)下载地址:http://pypi.python.org/packages/source/s/simplejson/simplejson-2.1.1.tar.gz#md5=0bbe3a2e5e4cac040013733aca159d89

(2)下载完成后解压到/usr/local/lib/python3.7/site-packages目录下


(3)在终端命令行中切换路径到/usr/local/lib/python3.7/site-packages/simplejson-3.10.0/,执行sudo python setup.py install,安装完成。

3、重启ride.py后重新导入HttpLibrary.HTTP库,字体变黑色成功!

你可能感兴趣的:(RobotFramework HTTP接口实战项目框架设计)