Python 3.6 + robotFramework automated framework Environment setup, learning notes,
######################################## #########################
# Author: Chen yuebai
# _ Blogs: http://www.cnblogs.com/chenyuebai/
######################################## #########################
I. Environment Construction
Overview: win 7 + python 3.6 + pycharm +Robotframework+ IntelliBot
1. Install related libraries
Install in sequence:
Pip install robotframework
Https://pypi.python.org/pypi/selenium/ # dependency packages
Https://pypi.python.org/pypi/robotframework-seleniumlibrary # dependency packages
Https://pypi.python.org/pypi/robotframework-selenium2library
2. pycharm
Development IDE, omitted
3.IntelliBotPycharm development plug-in [syntax highlighting]
Method 1: pycharm> File> setting> Plugins> Browse reponsitories
Method 2: https://plugins.jetbrains.com/plugin/7386-intellibot download to local
Pycharm> File> setting> Plugins> install plugin from disk
4. Configure the actuator for pycharm
File> setting> Tools> External tool. After the configuration is complete, you can select to use this executor in the. robot File for execution.
Parameters: current file path
Working directory: job path, log, result output, etc., as follows:
Note: log.html execution log
Xml of output. xml execution information, which can be used for subsequent secondary Parsing
Report. xml execution result report
2. Run the command in cmd.
Run a use case:
Pybot -- test test_case test_suit.robot
Run the specified file:
Pybot test_suit.robot
Run the test file suffixed with. robot in the current directory.
Pybot *. robot
Run all the use cases under the current testpath directory
Pybot testpath
III. Basic Syntax of case script (. robot file)
1. Basic syntax
* ** Settings ** Library MyLib # import the custom Library Selenium2Library *** Test Cases *** # The first behavior is in a fixed format, and the ID # is recommended to be consistent with python, use tab indent alignment (Set tab = 4 spaces in pycharm); otherwise, execution may fail, report "Test case contains no keywords" case1 helloworld # case Name log chenyuebai first rfw case # log is equivalent to the print of python and can generate a log. view case 2 log # create exception log in xml, supports multiple levels of log test line 2 ERRORcase 3 varible $ {myname} Set variable chen # defines the variable log my name is $ {myname} # Use the variable # case 4 Use varible # the case where the Variable scope is defined (case3); otherwise, "Variable '$ {myname}' not found is reported. "# log $ {myname} case 5 Catenate $ {hi1} Catenate hello world # define variable Mode 2 to connect two objects, support custom connector log ${hi1 }$ {hi2} Catenate SEPARATOR = ---- hello world log $ {hi2} case 6 list @ {mylist} create list a B c # definition list log outputs @ {mylist} # print the element in the List case 7 get time $ {currentTime} get time # get the current time 18:05:47 log $ {currentTime }$ {currentYear} get t Ime format = year # multiple input parameters are supported. For details, see the function definition log current year is $ {currentYear} case 8 sleep log get time sleep 1 # sleep, which is equivalent to the time of python. sleep (5) log get timecase 9 if $ {score} set variable 55 run keyword if $ {score}> = 90 log excellent... else if $ {score }>= 70 log is good # ELSE/else if should be capitalized... The syntax is very painful .. Why not directly apply the python syntax ..... ELSE log is poor #... I don't know what to consider .. It looks like the identifier belongs to the judgment logic of "run keyword if". Is it similar to the python tab? Case 10 for # for Loop, note that you need to use \ to identify the for loop range, feel and above... FOR $ {I} in range 5 # for in range (5): \ log $ {I} # print (I) case 11 allround the list @ {myList} create list 1 2 3 4 # myList = [1, 2, 4]: FOR $ {I} IN @ {myList} # for I in myList: \ log $ {I} # print (I) case 12 Evauate # Call the method in python, very powerful $ {randomNum} EVALUATE random. random () random # variable keyword EVALUATE the database name where the method of calling python is located log $ {randomNum} case 13 call my python # import the custom database, the following is a detailed description of $ {nowTime} get current time log $ {nowTime} case 14 Comment log start # line 1 comment line 2 # annotation: use the keyword or # log endcase 15 Selenium2Library # Selenium2Library library, operate the browser, and automate the web interface, to be refined open_browser http://www.baidu.com firefox Input text id = kw Chen yuebai click button id = su sleep 3 close Browser
2. Call the custom library in the robot File
Selenium2Library provides many methods, but some scenarios still need to be compiled by yourself. robotFramework supports importing User-Defined libraries.
Take my directory structure as an example:
(1) file of the custom method: MyRobotFrameworkLib. py
Import timeclass MyRobotFrameworkLib (): def _ init _ (self): pass # Get current time def get_current_time (self): current_time = time. strftime ('% Y-% m-% d % H: % M: % s', time. localtime (time. time () return current_time
(2) create MyLib. py
"Inherits the classes in the Custom library. rfw will parse the functions in the class as keywords. On the internet, It is also said that this file should be named _ init __. py, but I tried it. when the robot file is executed, the import fails. It seems that the file name must be the same as the class name (currently this is the case) "from MyRobotFrameworkLib import * class MyLib (MyRobotFrameworkLib): ROBOT_LIBRARY_SCOPE =" GLOBAL"
(3) import the robot file into the custom class and use the methods in the class
* ** Settings ** Library MyLib # import the custom Library case 13 call my python $ {nowTime} get current time log $ {nowTime}
3. Use Selenium2Library for automated web interface Testing
# Todo
20180126