`

robotframework测试web接口

 
阅读更多

robotframework 是一个简单易用的关键字驱动自动化测试框架,我这里用dbank的python的sdk作为目标测试程序简单使用robotframework

Why Robot Framework?

 

  • Enables easy-to-use tabular syntax for creating test cases in a uniform way.
  • Provides ability to create reusable higher-level keywords from the existing keywords.
  • Provides easy-to-read result reports and logs in HTML format.
  • Is platform and application independent.
  • Provides a simple library API for creating customized test libraries which can be implemented natively with either Python or Java.
  • Provides a command line interface and XML based output files for integration into existing build infrastructure (continuous integration systems).
  • Provides support for Selenium for web testing, Java GUI testing, running processes, Telnet, SSH, and so on.
  • Supports creating data-driven test cases.
  • Has built-in support for variables, practical particularly for testing in different environments.
  • Provides tagging to categorize and select test cases to be executed.
  • Enables easy integration with source control: test suites are just files and directories that can be versioned with the production code.
  • Provides test-case and test-suite -level setup and teardown.
  • The modular architecture supports creating tests even for applications with several diverse interfaces.

首先安装并检测是否成功

pip install robotframework
ciaos@linux-53dr:~/Downloads/python-sdk-0.1> pybot --version
Robot Framework 2.7.6 (Python 2.7.3 on linux2)

修改demo.py为下面的代码(作为目标测试接口,命令行程序)

nspApi.py

#!/usr/bin/env python

from nsp import NSPClient
import sys
import os

def helloworld(uname):
        nsp = NSPClient(****, '***********************');
        svc = nsp.service("nsp.demo")
        ret = svc.helloworld(uname)
        print ret

def lsdir(path):
        nsp = NSPClient('iuTeAN9uaQ6xYuCt8f7uaL4Hwua5CgiU2J0kYJq01KtsA4DY', 'c94f61061b46668c25d377cead92f898');
        svc = nsp.service("nsp.vfs");
        ret = svc.lsdir(path)
        print ret

def help():
    print 'Usage: %s { nsp.demo.helloworld | nsp.vfs.lsdir | help }' \
             % os.path.basename(sys.argv[0])


if __name__ == '__main__':
    actions = {'nsp.demo.helloworld': helloworld, 'nsp.vfs.lsdir': lsdir,
               'help': help}
    try:
        action = sys.argv[1]
    except IndexError:
        action = 'help'
    args = sys.argv[2:]
    try:
        actions[action](*args)
    except (KeyError, TypeError):
        help()

按照robotframework规范编写测试库如下

testLib/NspLibrary.py

#!/usr/bin/env python

import os
import sys

class NspLibrary:

    def __init__(self):
        self._nsp_path = os.path.join(os.path.dirname(__file__),
                                      '..', '.', 'nspApi.py')
        self._status = ''

    def helloworld(self, name):
        self._run_command('nsp.demo.helloworld', name)

    def lsdir(self, path):
        self._run_command('nsp.vfs.lsdir',path)

    def status_should_be(self, expected_status):
        if expected_status != self._status:
            raise AssertionError("Expected status to be '%s' but was '%s'"
                                  % (expected_status, self._status))

    def _run_command(self, command, *args):
        command = '"%s" %s %s' % (self._nsp_path, command, ' '.join(args))
        process = os.popen(command)
        self._status = process.read().strip()
        process.close()

编写测试用例nspTest.tsv(必须以单个分割符\t区分关键字,不然会报错,不能用多个\t或者空格)

*** Settings ***
Library OperatingSystem
Library testLib/NspLibrary.py

*** Variables ***
${NAME} "PJ!"
${RES1} "{'message': 'Hello:PJ!'}"
${LSDIR_RES}    "{'childList': {0: {'type': 'Directory', 'name': 'Netdisk'}, 1: {'type': 'Directory', 'name': 'Syncbox'}, 2: {'type': 'Directory', 'name': 'Recycle'}}}"

*** Test Cases ***
Demo Test       [Tags]  nsp.demo
        [Documentation] Example test
        Helloworld      ${NAME}
        Status should be        ${RES1}

Another Test
        Should Be Equal ${NAME} PJ!

VFS Test        [Tags]  nsp.vfs
        Lsdir   "/"
        Status should be        ${LSDIR_RES}
        Lsdir   "/Netdisk"
        Status should be        "Wrong results"

运行pybot nspTest.tsv,结果如下

ciaos@linux-53dr:~/Downloads/python-sdk-0.1> pybot nspTest.tsv 
==============================================================================
nspTest                                                                       
==============================================================================
Demo Test :: Example test                                             | PASS |
------------------------------------------------------------------------------
Another Test                                                          | PASS |
------------------------------------------------------------------------------
VFS Test                                                              | FAIL |
Expected status to be 'Wrong results' but was '{'childList': {0: {'type': 'Directory', 'name': 'zhujhdir'}, 1: {'type': 'Directory', 'name': '\xe7\x85\xa7\xe7\x89\x87'}, 2: {'type': 'Directory', 'name': '\xe6\x96\x87\xe6\xa1\xa3'}, 3: {'type': 'Directory', 'name': '\xe6\x88\x91\xe6\x94\xb6\xe5\x88\xb0\xe7\x9a\x84\xe6\x96\x87\xe4\xbb\xb6'}, 4: {'type': 'Directory', 'name': '\xe6\x88\x91\xe7\x9a\x84\xe6\x96\x87\xe4\xbb\xb6'}, 5: {'type': 'Directory', 'name': '\xe8\xbd\xaf\xe4\xbb\xb6'}, 6: {'type': 'File', 'name': '\xe6\x88\x91\xe7\x9a\x84\xe6\xb5\x8b\xe8\xaf\x95.php'}, 7: {'type': 'File', 'name': 'data.txt'}, 8: {'type': 'File', 'name': 'test.thrift'}, 9: {'type': 'File', 'name': 'acds4.txt'}, 10: {'type': 'File', 'name': 'nsp_sdk.log'}, 11: {'type': 'File', 'name': 'data.rar'}, 12: {'type': 'File', 'name': 'test.rar'}}}'
------------------------------------------------------------------------------
nspTest                                                               | FAIL |
3 critical tests, 2 passed, 1 failed
3 tests total, 2 passed, 1 failed
==============================================================================
Output:  /home/ciaos/Downloads/python-sdk-0.1/output.xml
Log:     /home/ciaos/Downloads/python-sdk-0.1/log.html
Report:  /home/ciaos/Downloads/python-sdk-0.1/report.html

 其中report.html等文件包含详细的测试结果

 此外robotframe包含丰富的测试工具,如内置测试库以及用于测试web接口的requests库,直接使用request测试库可以免去我们编写web请求的工作。

安装顺序

pip install -U requests==0.9.0

pip install -U robotframework-requests

使用示例:

WEB TEST        [Tags]  web.test
        Create Session  vmall   http://api.vmall.com
        ${resp}=        GET     vmall   /rest.php
        Should Be Equal As Strings      ${resp.status_code}     200
        log     ${resp.content}
        Should Contain  ${resp.content} "param"
        ${json}=        To JSON ${resp.content}
        Dictionary Should Contain Value ${json} "param error"
分享到:
评论

相关推荐

    使用RobotFramework测试HTTP接口的方法及其环境配置指南

    首先阐述了 Robot Framework 是一款基于 Python 的自动化测试框架,主要用于多种类型客户端以及接口的测试,尤其是在多次迭代验收测试或 ATDD 场景中表现出色。接着,文档指导用户完成 Robot Framework 测试环境的...

    Python3+RIDE+RobotFramework自动化测试框架搭建过程详解

    以上步骤能够帮助测试人员顺利完成Python3+RIDE+RobotFramework自动化测试框架的搭建,并能够对Web应用进行自动化测试。通过这样的框架,可以快速搭建测试环境,编写测试脚本,并查看测试结果,极大地提高了自动化...

    robotframework自动化测试demo实例

    在这个"robotframework自动化测试demo实例"中,我们可以深入学习如何利用Robot Framework进行自动化测试。 首先,Robot Framework的核心概念是测试用例(Test Cases)和关键词(Keywords)。测试用例由步骤(Steps...

    WEB自动化测试-RobotFramework验收测试框架搭建

    **WEB自动化测试-RobotFramework验收测试框架搭建** 在软件开发过程中,自动化测试是提升效率、保证质量的关键步骤。Robot Framework是一种流行的开源自动化测试框架,它适用于多种领域,包括Web应用的验收测试。本...

    RobotFramework自动化测试修炼宝典+齐涛著

    《RobotFramework自动化测试修炼宝典》是由齐涛著的一本专著,主要聚焦于使用Robot Framework进行自动化测试的实践与理论。Robot Framework是一款开源的通用自动化框架,尤其适合用于软件测试自动化,它提供了丰富的...

    阖恒03-使用RobotFramework测试接口.rar

    本资源"阖恒03-使用RobotFramework测试接口.rar"提供了一份详细的文章,介绍了如何利用Robot Framework进行接口测试。以下是关于这个主题的详细知识点: 1. Robot Framework简介:Robot Framework是一个开放源代码...

    自动化测试框架RobotFramework+Selenium2

    自动化测试框架RobotFramework+Selenium2 自动化测试框架RobotFramework+Selenium2是结合RobotFramework框架和Selenium2Library实现自动化测试的解决方案。下面是该框架的详细介绍: 简介 Robot Framework是一个...

    RobotFramework自动化测试

    **RobotFramework自动化测试** Robot Framework 是一款开源的通用自动化测试框架,它被广泛应用于软件测试、系统集成验证以及持续集成等多个领域。这个压缩包包含了关于Robot Framework的详细资料,包括实例源码,...

    RobotFramework用法总结.pdf

    具体的步骤可以参考相关的安装教程,确保Python环境配置正确,并通过pip或conda等工具安装Robot Framework及其依赖库,如SeleniumLibrary用于Web自动化测试,或者AppiumLibrary用于移动应用测试。 二、基本流程 1. ...

    Robot Framework自动化测试修炼宝典

    在第2部分小乘篇中,主要有Web自动化测试、C/S自动化测试、数据库自动化测试、接口自动化测试、RF内置测试库、持续集成自动化测试、移动自动化测试总共七章的内容;在第3部分大乘篇中,主要有自定义你的RF一章的内容...

    Robot Framework 源代码阅读笔记 之 一 - CSDN博客

    首先,作者提到了Robot Framework的一些基础测试库,如selenium-webUI自动化测试、splinter-webUI测试工具等。Selenium是一个用于Web应用程序测试的工具,它可以将测试脚本在多种浏览器上进行自动运行,而splinter是...

    RobotFramework自动化框架搭建步骤(Python+RobotFramework。。。.pdf

    - 接下来安装SeleniumLibrary,这是Robot Framework用于Web UI自动化测试的关键库,通过`pip install robotframework-seleniumlibrary`命令进行安装。 - 如果需要进行Windows操作,如键盘和鼠标操作,需要安装...

    RobotFramework+selenium自动化测试-齐涛博客教程整理

    RobotFramework(简称RF)结合Selenium Library,为Web自动化测试提供了一个强大的框架。这种组合允许测试人员使用一种简洁且易于理解的语言编写自动化测试脚本,并通过Selenium Library来控制浏览器执行各种操作。 ...

    robot framework 自动化测试

    Selenium2Library是Robot Framework中非常重要的一个库,主要用于Web自动化测试,支持通过不同的定位方法来找到Web页面的元素,并进行操作。例如,通过id、name、xpath、css选择器等方法定位Web元素,并执行诸如输入...

    Python-RobotFramework一个通用的自动化测试框架

    **Python-Robot Framework:通用自动化测试框架详解** Python-Robot Framework是一个强大且灵活的开源自动化测试框架,尤其适合于系统集成、验收测试以及端到端的业务流程验证。它的设计思路是面向关键字驱动,允许...

    RobotFramework自动化测试修炼宝典

    3. **标准库与自定义库**:讲解如何使用内置的标准库,如OperatingSystem库进行系统操作,HTTPLibrary进行Web接口测试,以及如何根据需求开发自定义的Python库来扩展功能。 4. **数据驱动测试**:介绍如何通过数据...

    002RobotFramework测试框架使用手册.zip

    关于“002RobotFramework测试框架使用手册.pdf”这个文件,它是Robot Framework的详细指南,很可能包含了如何安装和配置框架、如何编写测试用例、如何执行测试套件、如何处理测试结果以及如何创建和使用自定义库等...

    robotframework安装包集合

    标题 "robotframework安装包集合" 描述中提及的是一系列用于搭建和运行Robot Framework测试框架的组件,包括Python 2.7、wxPython、Robot Framework、RIDE(Robot Framework IDE)和其他相关工具。这些工具在自动化...

    RobotFramework之http接口测试库RequestsLibrary使用介绍(十).docx

    RobotFramework是一个开源、灵活且可扩展的自动化测试框架,它支持多种类型的测试,包括但不限于Web UI测试(Selenium)、API测试等。由于其简单易用的特点,RobotFramework成为了很多初学者接触自动化测试的首选...

Global site tag (gtag.js) - Google Analytics