Python 3.6 + construcción del entorno del marco de automatización de robotFramework, notas de estudio

contenido

 1. Construcción del entorno

1. Instale las bibliotecas relevantes

2.pycharm

3. IntelliBot 

Ejecutor de configuración 4.pycharm

navegador 5.fireFox y controlador correspondiente

Segundo, use cmd para ejecutar

3. Sintaxis básica del script de caso (archivo .robot)

1. Gramática básica

2. Llame a la biblioteca personalizada en el archivo de robot

Cuarto, use la biblioteca SeleniumLibrary para la prueba de automatización de la interfaz web

5. Pruebas basadas en datos

 1. Construcción del entorno

Descripción general: ganar 7+ python 3.6 + pycharm +  robotframework  + IntelliBot + fireFox

1. Instale las bibliotecas relevantes

Se recomienda usar pip para instalar, como pip install robotframework (y selenium2library).
El entorno de I + D no tiene una red externa. Se usa la instalación fuera de línea. Después de descargar el paquete, descomprima -- ingrese -- python setup.py install
(1 ) Prueba de página WEB: https://pypi.python.org/pypi/robotframework https://pypi.python.org/pypi/selenium#downloads #Paquete de
dependencia https://pypi.python.org/pypi/robotframework- seleniumlibrary #Paquete de dependencia https://pypi.python .org/pypi/robotframework-selenium2library (2) Prueba de interfaz: En línea: solicitudes de instalación de pip Fuera de línea: https://pypi.python.org/pypi/certifi #Paquete de dependencia https: //pypi.python.org/pypi/urllib3 #descargas #paquete dependientehttps://pypi.python.org/pypi/idna#descargas #paquete dependiente









https://pypi.python.org/pypi/chardet/#downloads #paquete de dependencia
https://pypi.python.org/pypi/requests#downloads


2.pycharm

IDE de desarrollo, ligeramente


3. IntelliBot 

complemento de desarrollo de pycharm [resaltado de sintaxis]
Método 1: pycharm>Archivo>configuración>Complementos>Examinar repositorios
Método 2: https://plugins.jetbrains.com/plugin/7386-intellibot Descargar a
pycharm local>Archivo>configuración>Complementos> instalar complemento desde el disco


Ejecutor de configuración 4.pycharm


Archivo>configuración>Herramientas>Herramienta externa, una vez completada la configuración, puede elegir usar este ejecutor en el archivo .robot para ejecutar

Parámetros: ruta del archivo actual

Directorio de trabajo: ruta de trabajo, registro, salida de resultados, etc., de la siguiente manera:

Nota: registro de ejecución log.html

  output.xml ejecuta el xml de la información relevante, que se puede utilizar para el análisis secundario posterior 

  informe de resultados de ejecución report.xml

navegador 5.fireFox y controlador correspondiente

(1) navegador

https://www.mozilla.org/zh-CN/firefox/developer/

(2) conducir

https://github.com/mozilla/geckodriver/releases/download/v0.19.1/geckodriver-v0.19.1-win64.zip

Descomprima (geckodriver.exe) y cópielo en el directorio de instalación de python


Segundo, use cmd para ejecutar

Ejecute un caso de prueba:
pybot --test test_case test_suit.robot

Ejecute el archivo especificado:
pybot test_suit.robot

Ejecute el archivo de prueba con el sufijo .robot en el directorio actual
pybot *.robot

Ejecute todos los casos de prueba en el directorio
testpath actual pybot testpath


3. Sintaxis básica del script de caso (archivo .robot)

1. Gramática básica

*** Settings ***
Library     MyLib                                          #导入自定义的库
Library     SeleniumLibrary

*** Test Cases ***
                                                            #第一行为固定格式,标识
                                                            #建议同python一致,使用tab缩进对齐(pycharm中设置tab=4空格),否则可能报执行失败,报 "Test case contains no keywords"
case1 helloworld                                            #案例名
    log     chenyuebai first rfw case                        #log 相当于python的print,可在生成的log.xml中查看

case 2 log                                                  #打异常日志,支持多种级别
    log     test line 2     ERROR

case 3 varible
    ${myname}     Set variable        chen                  #定义变量
    log     my name is ${myname}                            #使用变量

#case 4 use varible                                         #变量作用域为其定义所在的案例(case3),否则报"Variable '${myname}' not found."
#    log     ${myname}

case 5 Catenate
    ${hi1}    Catenate      hello    world                  #定义变量方式2  连接两个对象,支持自定义连接符
    log    ${hi1}
    ${hi2}    Catenate      SEPARATOR=----  hello    world
    log    ${hi2}

case 6 list
    @{mylist}       create list     a       b      c        #定义列表
    log many        @{mylist}                               #打印列表中的元素

case 7 get time
    ${currentTime}      get time                            #获取当前时间     2018-01-02 18:05:47
    log     ${currentTime}
    ${currentYear}      get time    format=year             #支持多种传参,详情看函数定义
    log     current year is ${currentYear}

case 8 sleep
    log     get time
    sleep   1                                               #睡眠,等同于python的time.sleep(5)
    log     get time

case 9 if
    ${score}    set variable    55
    run keyword if    ${score}>=90    log    优秀
    ...    ELSE IF    ${score}>=70    log    良好           #ELSE/ELSE IF要大写。。。语法很蛋疼。。为啥不直接套用python的语法。。
    ...    ELSE    log    很差                              # ... 不知道基于什么考虑的。。看起来像是标识属于“run keyword if”这个判断逻辑;类似python的tab?

case 10 for                                                 #for循环,注意需要使用\来标识这个for循环范围,感觉和上面的...类似
    :FOR    ${i}    IN RANGE    5                           #   for in in range(5):
    \   log    ${i}                                         #        print(i)

case 11 allround the list
    @{myList}    create list  1    2    3    4              # myList = [1,2,3,4]
    :FOR    ${i}    IN    @{myList}                         # for i in myList:
    \   log    ${i}                                         #  print(i)

case 12 Evauate                                             #调用python中的方法,很强大
    ${randomNum}    EVALUATE    random.random()     random  #变量    关键字EVALUATE    调用python的方法    方法所在的库名
    log    ${randomNum}

case 13 call my python                                      #导入自定义库,下面有详细说明
    ${nowTime}    get current time
    log    ${nowTime}

case 14 Comment
    log     start
    #line 1
    comment  line 2                                         #标明注释:使用关键字或者#均可
    log     end


case 15 Selenium2Library                      #Selenium2Library库,操作浏览器,可作web界面自动化,待细化
    open_browser    http://www.baidu.com    firefox
    Input text    id=kw    陈月白
    click button    id=su
    sleep       3
    close Browser

2. Llame a la biblioteca personalizada en el archivo de robot

Selenium2Library proporciona muchos métodos, pero todavía hay algunos escenarios que deben escribirse por sí mismos en el uso real.RobotFramework admite la importación de bibliotecas definidas por el usuario.

Preste atención a la correspondencia entre el nombre del archivo y el nombre de la clase, de lo contrario, la biblioteca de importación fallará;

En ...\ruta de instalación de Python\Lib\site-packages:

(1) El archivo donde se encuentra el método personalizado: MyKeywords.py

import time
class MyKeywords():
    def __init__(self):
        pass


    #获取当前时间
    def get_current_time(self):
        current_time = time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))
        return current_time

(2) Crear __init__.py

"""
继承自定义库中的类,rfw会解析类中的函数作为关键词
"""
from .MyKeywords import *

class MyRobotFwkLib(MyKeywords):
    ROBOT_LIBRARY_SCOPE = "GLOBAL"
(3) El archivo .robot importa la clase personalizada y puede usar los métodos en la clase
*** Settings ***
Library     MyRobotFwkLib                                          #导入自定义的库

case 13 call my python 
    ${nowTime}    get current time
    log    ${nowTime}

Cuarto , use la biblioteca SeleniumLibrary para la prueba de automatización de la interfaz web

SeleniumLibrary proporciona muchas palabras clave básicas, que básicamente pueden simular la mayoría de las operaciones en el navegador;

Además, también admite la encapsulación de palabras clave básicas en palabras clave avanzadas de acuerdo con la lógica comercial (que se puede entender como una función, hay ejemplos a continuación);

Admite la especificación de múltiples navegadores y elementos operativos por identificación de elementos;

Los complementos de Firefox que uso para herramientas de elementos de posicionamiento: firePath, fireBug , muy convenientes;

Palabras clave básicas (incluidas en SeleniumLibrary) + palabras clave avanzadas (encapsulan palabras clave básicas de acuerdo con el negocio real) + palabras clave en bibliotecas definidas por el usuario (con ejemplos de configuración anteriores), que casi pueden cumplir con varios escenarios comerciales de la mayoría de las aplicaciones web;

pd: durante la depuración, se encuentra que muchas palabras clave no se pueden ver ni definir, lo cual es un inconveniente para ver el uso y la transferencia de parámetros, pero no hay problema en la ejecución real;

Mirando el __init__.py de la biblioteca SeleniumLibrary, se determina que la mayoría de las bibliotecas de palabras clave involucradas se heredan de la inicialización cuando se inicia la ejecución;

Entonces, el método estúpido se introduce directamente en su totalidad y no tiene ningún efecto en la actualidad.

Realice el inicio de sesión y la verificación en segundo plano del proyecto:

*** Settings ***
#方便IDE调试,不添加无法找到关键字定义
Library    browsermanagement
Library    AlertKeywords
Library    BrowserManagementKeywords
Library    CookieKeywords
Library    ElementKeywords
Library    FormElementKeywords
Library    FrameKeywords
Library    JavaScriptKeywords
Library    RunOnFailureKeywords
Library    ScreenshotKeywords
Library    SelectElementKeywords
Library    TableElementKeywords
Library    WaitingKeywords
Library    WindowKeywords

Library     SeleniumLibrary

#配置套件级别的Setup和Teardown
Suite Setup
...     log     now test start 1       #只执行一条

Suite Teardown    Run Keywords
...     close all browsers  AND         #执行多条
...     log     now end 4


#全局变量
*** Variables ***
${loginPageUrl}    http://10.XX.XX.232:9XX0/admin/index.do?index=1
${validUsername}            admin
${validloginPasswd}         adminpasswd


*** Test Cases ***
case 1 correct login test
    #配置用例级别的Setup和Teardown
    [setup]         log     setup log 2
    [teardown]      log     teardown log 3

    correctLoginTest        ${validUsername}        ${validloginPasswd}     #使用基础关键字封装出的高级关键字


#使用基础关键字封装高级关键字,类似python的一个函数,支持入参出参,很灵活
*** Keywords ***
correctLoginTest
    [Arguments]    ${uasename}      ${passwd}
    open browser    ${loginPageUrl}     firefox
    setBrowser
    input text      xpath=html/body/div[1]/form/input[1]    ${uasename}
    input text      xpath=html/body/div[1]/form/input[2]    ${passwd}
    click element   class=submit
    sleep       5
#    ${page1_title}    get title                                     #获取页面title,可后续校验页面是否到达
#    ${width}    ${height}    get window size                        #获取浏览器窗口大小
#    select window    NEW                                    #切换到新弹出窗口(视图焦点)
    page should contain element     xpath=//*[@id='topMenu4']       #系统管理菜单
    sleep       2
    close all browsers


setBrowser
    set window size    1024     768                        #设置浏览器窗口大小
    maximize browser window                                 #浏览器窗口最大化
    sleep  1

5. Pruebas basadas en datos

Pruebas basadas en datos, adecuadas para probar con diferentes combinaciones de entrada bajo el mismo proceso y los mismos resultados esperados

Por ejemplo, pruebe el proceso de inicio de sesión anormal, la verificación anormal del nombre de usuario y la contraseña bajo varias combinaciones de errores (o vacíos)

ejemplo:

*** Settings ***
Library     SeleniumLibrary
Test Template   errorLoginTest      #公共逻辑



*** Variables ***
${loginPageUrl}    http://10.XX.XX.232:9XX0/admin/index.do?index=1
${validUsername}            admin
${validloginPasswd}         adminpasswd



*** Test Cases ***                  username                 passwd
#异常登录测试
case 2:Invalid Username            invalidname              ${validloginPasswd}

case 3:Invalid Password            ${validUsername}         invalidPasswd

case 4:Invalid Both                invalidName              invalidPasswd

case 5:Empty Username              ${EMPTY}                 ${validloginPasswd}

case 6:Empty Password              ${validUsername}         ${EMPTY}

case 7:Empty Both                  ${EMPTY}                 ${EMPTY}



*** Keywords ***
errorLoginTest
    [Arguments]    ${uasename}      ${passwd}
    open browser    ${loginPageUrl}     firefox
    input text      xpath=html/body/div[1]/form/input[1]    ${uasename}
    input text      xpath=html/body/div[1]/form/input[2]    ${passwd}
    click element   class=submit
    sleep     5
    page should contain element        class=submit     5      error:预期应含登录元素未找到【即跳转失败】
    sleep     5
    close all browsers

Resultados de la:

Supongo que te gusta

Origin blog.csdn.net/ZangKang1/article/details/123164859
Recomendado
Clasificación