RobotFramework 官方demo Quick Start Guide rst配置文件分析

简介: RobotFramework 官方demo Quick Start Guide rst配置文件分析

RobotFramework官方demo Quick Start Guide rst配置文件分析

 

 

1、 Demo下载

下载地址:demo for robotframework rst配置文件分析

 

2、 QuickStart.rsc文件

 

.. code:: robotframework

 

   *** Test Cases ***

   User can create an account and log in

       [Tags]  mytag

       Create Valid User    fred    P4ssw0rd

       Attempt to Login with Credentials    fred    P4ssw0rd

       Status Should Be    Logged In

 

   Invalid password

       [Template]    Creating user with invalid password should fail

       abCD5            ${PWD INVALID LENGTH}

       abCD567890123    ${PWD INVALID LENGTH}

       123DEFG          ${PWD INVALID CONTENT}

       abcd56789        ${PWD INVALID CONTENT}

       AbCdEfGh         ${PWD INVALID CONTENT}

       abCD56+          ${PWD INVALID CONTENT}

 

   User can change password

       Given A user has a valid account

       When she changes her password

       Then she can log in with the new password

       And she cannot use the old password anymore

 

   Clear Login Database finally

   Clear Login Database

 

   *** Keywords ***

   Create valid user

       [Arguments]    ${username}    ${password}

       Create user    ${username}    ${password}

       Status should be    SUCCESS

 

   Creating user with invalid password should fail

       [Arguments]    ${password}    ${error}

       Create user    example    ${password}

       Status should be    Creating user failed: ${ERROR}

 

 

   Clear Login Database

       Remove file    ${DATABASE FILE}

 

   A user has a valid account

       Create valid user    ${USERNAME}    ${PASSWORD}

 

   She changes her password

       Change password    ${USERNAME}    ${PASSWORD}    ${NEW PASSWORD}

       Status should be    SUCCESS

 

   She can log in with the new password

       Login    ${USERNAME}    ${NEW PASSWORD}

 

   She cannot use the old password anymore

       Attempt to login with credentials    ${USERNAME}    ${PASSWORD}

       Status should be    Access Denied

 

   *** Variables ***

   ${USERNAME}               janedoe

   ${PASSWORD}               J4n3D0e

   ${error}                  123456

   ${NEW PASSWORD}           e0D3n4J

   ${DATABASE FILE}          ${TEMPDIR}${/}robotframework-quickstart-db.txt

   ${PWD INVALID LENGTH}     Password must be 7-12 characters long

   ${PWD INVALID CONTENT}    Password must be a combination of lowercase and uppercase letters and numbers

   ${ERROR}                  Creating user failed: Password must be 7-12 characters long

 

 

   *** Settings ***

   Suite Setup       Clear Login Database

   Test Teardown     Clear Login Database

   Force Tags     quickstart

   Default Tags   example    smoke

   Library           OperatingSystem

   Library           Lib/LoginLibrary.py

 

__ `Creating test libraries`_

 

3、 测试用例

User can create an account and log in

 

*** Test Cases ***

User can create an account and log in

   [Tags]    mytag

   Create Valid User    fred    P4ssw0rd

   Attempt to Login with Credentials    fred    P4ssw0rd

   Status Should Be    Logged In

 

用例由关键词及对应参数,设置和对应值组成。关键词和对应参数之间(比如关键词Create Valid User和参数fred),参数与参数之间(fredP4ssw0rd),设置和对应值之间(比如Tagsmytag)至少需要2个空格,或1tab键分隔开,建议使用空格分隔。

 

行为驱动测试

使用行为驱动风格的测试用例(given-when-then

*** Test Cases ***

User can change password

   Given A user has a valid account

   When she changes her password

  Then she can log in with the new password

   And she cannot use the old password anymore

 

关键词(比如A user has a valid account)不带位置参数

 

 

数据驱动测试

通过[Template]设置把用例转为数据驱动,运行时,会提取case body下方的参数(如例中的abCD5    ${PWD INVALID LENGTH}),重复执行模版关键字(比如Creating user with invalid password should fail

*** Test Cases ***

Invalid password

   [Template]   Creating user with invalid password should fail

   abCD5            ${PWD INVALID LENGTH}

   abCD567890123    ${PWD INVALID LENGTH}

   123DEFG          ${PWD INVALID CONTENT}

   abcd56789        ${PWD INVALID CONTENT}

   AbCdEfGh         ${PWD INVALID CONTENT}

   abCD56+          ${PWD INVALID CONTENT}

 

4、 关键字

关键字有两种:

类库关键字(Library keywords):来自引入的测试类库

用户关键字(user keywords):为构造测试用例使用表格语法(tabular syntax)创建的

 

注意:大小写外,关键要完全匹配,比如关键词单词之间不能多一个空格,少一个空格

 

1、类库关键词

测试类库(test libraries)可分成成标准类库(stand libraries),外部类库(external library)

还有自定义类库。标准类库随core framework一起发布,包括通用类库,如OperatingSystem,ScreenshotBuiltln。外部类库,比如Selenium2Library,必须独立安装。如果这些还不能满足需求,则自定义类库,比如本例中的LoginLibrary.py

 

为了能使用测试类库提供的关键词,必须使用Library设置导入关键字。例中Remove File来自标准类库OperatingSystem。其它一些关键词,如Attempt to login with credentials来自自定义类库LoginLibrary

 

*** Settings ***

Library           OperatingSystem

Library           Lib/LoginLibrary.py

 

__ `Creating test libraries`_

 

注意:__ `Creating test libraries`_ 不能少,否则不会创建测试类库。

 

2、用户关键字

Robot Framework的一个强大功能就是可以通过其它关键字创建更高层级的关键词。

*** Keywords ***

Create valid user

   [Arguments]    ${username}    ${password}

   Create user    ${username}    ${password}

   Status should be    SUCCESS

 

Creating user with invalid password should fail

   [Arguments]    ${password}    ${error}

   Create user    example    ${password}

   Status should be    Creating user failed: ${ERROR}

 

Clear Login Database

   Remove file    ${DATABASE FILE}

 

# comment 以下是通过关键字创建的,供一些用例使用的更高层级关键字

A user has a valid account

   Create valid user    ${USERNAME}    ${PASSWORD}

 

She changes her password

   Change password    ${USERNAME}    ${PASSWORD}    ${NEW PASSWORD}

   Status should be    SUCCESS

 

She can log in with the new password

   Login    ${USERNAME}    ${NEW PASSWORD}

 

She cannot use the old password anymore

   Attempt to login with credentials    ${USERNAME}    ${PASSWORD}

   Status should be    Access Denied

 

如上,关键字也可以携带参数。关键字还可以有返回值,甚至是FOR循环

5、 变量

变量定义

 

*** Variables ***

${USERNAME}               janedoe

${PASSWORD}               J4n3D0e

${error}                  123456

${NEW PASSWORD}           e0D3n4J

${DATABASE FILE}          ${TEMPDIR}${/}robotframework-quickstart-db.txt

${PWD INVALID LENGTH}     Password must be 7-12 characters long

${PWD INVALID CONTENT}    Password must be a combination of lowercase and uppercase letters and numbers

${ERROR}                  Creating user failed: Password must be 7-12 characters long

 

变量也可以通过命令行输入,特别是需要在不同环境执行的时候,这很有用。例如

robot --variable USERNAME:johndoe --variable PASSWORD:J0hnD0e QuickStart.rst

 

除了一些自定义变量,有一些内置变量也总是可用的。这些变量包括上述使例中使用的${TEMPDIR}${/}

 

变量的使用

变量可在大部分测试数据中使用。如下,最常用于关键词的参数。从关键词返回的数据可以赋值给变量,并在后续使用。例如,以下的Database Should Contain用户关键词设置数据库内容为${database}变量,然后确内置关键词(BuiltIn  keyword)Should Contain确认。类库关键词和用户关键词都可以返回值。

*** Test Cases ***

User status is stored in database

[Tags]    variables    database    

Create Valid User    ${USERNAME}    ${PASSWORD}

   Database Should Contain    ${USERNAME}    ${PASSWORD}    Inactive

   Login    ${USERNAME}    ${PASSWORD}

   Database Should Contain    ${USERNAME}    ${PASSWORD}    Active

 

*** Keywords ***

Database Should Contain

   [Arguments]    ${username}    ${password}    ${status}

   ${database} =     Get File    ${DATABASE FILE}

   Should Contain    ${database}    ${username}\t${password}\t${status}\n

 

 

6、 组织测试用例

测试用例的集合,称为套件。每个包含测试用例的输入文件形成一个测试套件。执行 QuickStart.rst时,可在控制台输出看到测试套件QuickStart该名字是从文件名继承的,在报告和logs中也可见

 

可把测试用例文件放入某些目录,然后把这些文件目录在放入到其它目录中,即可嵌套。所有这些目录自动形参更高层级的测试套件,套件名字来源于目录名字。

 

运行执行套件

.rsthtml等配置文件放到套件所在目录下,然后运行命令robot -s suite_name path_to_dir如:

 

E:\Projects\studyproject>robot -s suite ./suite

 

 

7、 启动和结束(Setup and Teardown)

如果想让某些关键字在每个测试执行前、执行后都被执行,可在setting表中使用Test SetupTest Teardown设置。类似的,可以使用Suite SetupSuite Teardown设置来指整个套件执行前、执行后都需要运行的关键字。

 

单个用例也可在Test Cases用例表中使用[Setup][Teardown]自定义setupteardown。方法同[Template]的使用。

 

*** Settings ***

Suite Setup       Clear Login Database

Test Teardown     Clear Login Database

 

 

8、 使用标签

Rf允许为测试用例使用标签,以给它们自由元数据。如下setting表,可用[Force Tags][Default Tags]为文件中的所有测试用例设置Tags。也可以用[Tags]为单个测试用例定义Tags

*** Settings ***

Force Tags        quickstart

Default Tags      example    smoke

 

Tags的一个重要应用是可选择需要执行的测试。例如

robot --include mytag QuickStart.rst       #只执行携带mytag标签的用例

robot --exclude mytag QuickStart.rst       #只执行携带mytag标签的用例

 

注意:如果为单个用例指定了[Tags],那么该用例将无法拥有Default Tags,否则可拥有,而Force Tags则强制为所有用例设置Tags,即便用例已指定[Tags]也不影响。以上为例子,用例User can create an account and log in只包含quickstartmytag

 

9、 创建测试类库

#!/usr/bin/env python

# -*- coding:utf-8 -*-

 

import  os.path

import subprocess

import sys

 

class LoginLibrary(object):

   def __init__(self):

       self._sut_path = os.path.join(os.path.dirname(__file__),

                                     '..', 'sut', 'login.py')

       self._status = ''

 

   def create_user(self, username, password):

       self._run_command('create', username, password)

 

   def change_password(self, username, old_pwd, new_pwd):

       self._run_command('change-password', username, old_pwd, new_pwd)

 

   def attempt_to_login_with_credentials(self, username, password):

       self._run_command('login', username, password)

 

   def login(self, username, password):

       self._run_command('login', username, password)

 

   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 truncate(self):

       self._run_command('truncatefile')

 

   def _run_command(self, command, *args):

       command = [sys.executable, self._sut_path, command] + list(args)

       process = subprocess.Popen(command, universal_newlines=True, stdout=subprocess.PIPE,

                                  stderr=subprocess.STDOUT)

       self._status = process.communicate()[0].strip()

 

 

参考连接:

https://github.com/robotframework/QuickStartGuide/blob/master/QuickStart.rst

目录
相关文章
|
9天前
|
存储 关系型数据库 分布式数据库
PostgreSQL 18 发布,快来 PolarDB 尝鲜!
PostgreSQL 18 发布,PolarDB for PostgreSQL 全面兼容。新版本支持异步I/O、UUIDv7、虚拟生成列、逻辑复制增强及OAuth认证,显著提升性能与安全。PolarDB-PG 18 支持存算分离架构,融合海量弹性存储与极致计算性能,搭配丰富插件生态,为企业提供高效、稳定、灵活的云数据库解决方案,助力企业数字化转型如虎添翼!
|
8天前
|
存储 人工智能 Java
AI 超级智能体全栈项目阶段二:Prompt 优化技巧与学术分析 AI 应用开发实现上下文联系多轮对话
本文讲解 Prompt 基本概念与 10 个优化技巧,结合学术分析 AI 应用的需求分析、设计方案,介绍 Spring AI 中 ChatClient 及 Advisors 的使用。
366 130
AI 超级智能体全栈项目阶段二:Prompt 优化技巧与学术分析 AI 应用开发实现上下文联系多轮对话
|
8天前
|
人工智能 Java API
AI 超级智能体全栈项目阶段一:AI大模型概述、选型、项目初始化以及基于阿里云灵积模型 Qwen-Plus实现模型接入四种方式(SDK/HTTP/SpringAI/langchain4j)
本文介绍AI大模型的核心概念、分类及开发者学习路径,重点讲解如何选择与接入大模型。项目基于Spring Boot,使用阿里云灵积模型(Qwen-Plus),对比SDK、HTTP、Spring AI和LangChain4j四种接入方式,助力开发者高效构建AI应用。
356 122
AI 超级智能体全栈项目阶段一:AI大模型概述、选型、项目初始化以及基于阿里云灵积模型 Qwen-Plus实现模型接入四种方式(SDK/HTTP/SpringAI/langchain4j)
|
20天前
|
弹性计算 关系型数据库 微服务
基于 Docker 与 Kubernetes(K3s)的微服务:阿里云生产环境扩容实践
在微服务架构中,如何实现“稳定扩容”与“成本可控”是企业面临的核心挑战。本文结合 Python FastAPI 微服务实战,详解如何基于阿里云基础设施,利用 Docker 封装服务、K3s 实现容器编排,构建生产级微服务架构。内容涵盖容器构建、集群部署、自动扩缩容、可观测性等关键环节,适配阿里云资源特性与服务生态,助力企业打造低成本、高可靠、易扩展的微服务解决方案。
1340 8
|
2天前
|
存储 JSON 安全
加密和解密函数的具体实现代码
加密和解密函数的具体实现代码
190 136
|
7天前
|
监控 JavaScript Java
基于大模型技术的反欺诈知识问答系统
随着互联网与金融科技发展,网络欺诈频发,构建高效反欺诈平台成为迫切需求。本文基于Java、Vue.js、Spring Boot与MySQL技术,设计实现集欺诈识别、宣传教育、用户互动于一体的反欺诈系统,提升公众防范意识,助力企业合规与用户权益保护。
|
19天前
|
机器学习/深度学习 人工智能 前端开发
通义DeepResearch全面开源!同步分享可落地的高阶Agent构建方法论
通义研究团队开源发布通义 DeepResearch —— 首个在性能上可与 OpenAI DeepResearch 相媲美、并在多项权威基准测试中取得领先表现的全开源 Web Agent。
1440 87