Generic automation framework for acceptance testing and RPA

Overview

Robot Framework

Introduction

Robot Framework is a generic open source automation framework for acceptance testing, acceptance test driven development (ATDD), and robotic process automation (RPA). It has simple plain text syntax and it can be extended easily with libraries implemented using Python or Java.

Robot Framework is operating system and application independent. The core framework is implemented using Python, supports both Python 2.7 and Python 3.5+, and runs also on Jython (JVM), IronPython (.NET) and PyPy. The framework has a rich ecosystem around it consisting of various generic libraries and tools that are developed as separate projects. For more information about Robot Framework and the ecosystem, see http://robotframework.org.

Robot Framework project is hosted on GitHub where you can find source code, an issue tracker, and some further documentation. See CONTRIBUTING.rst if you are interested to contribute. Downloads are hosted on PyPI, except for the standalone JAR distribution that is on Maven central.

Robot Framework development is sponsored by Robot Framework Foundation.

Latest version License

Installation

If you already have Python with pip installed, you can simply run:

pip install robotframework

Alternatively you can get Robot Framework source code by downloading the source distribution from PyPI and extracting it, or by cloning the project repository from GitHub. After that you can install the framework with:

python setup.py install

For more detailed installation instructions, including installing Python, Jython, IronPython and PyPy or installing from git, see INSTALL.rst.

Example

Below is a simple example test case for testing login to some system. You can find more examples with links to related demo projects from http://robotframework.org.

*** Settings ***
Documentation     A test suite with a single test for valid login.
...
...               This test has a workflow that is created using keywords in
...               the imported resource file.
Resource          resource.robot

*** Test Cases ***
Valid Login
    Open Browser To Login Page
    Input Username    demo
    Input Password    mode
    Submit Credentials
    Welcome Page Should Be Open
    [Teardown]    Close Browser

Usage

Tests (or tasks) are executed from the command line using the robot command or by executing the robot module directly like python -m robot or jython -m robot.

The basic usage is giving a path to a test (or task) file or directory as an argument with possible command line options before the path:

robot tests.robot
robot --variable BROWSER:Firefox --outputdir results path/to/tests/

Additionally there is the rebot tool for combining results and otherwise post-processing outputs:

rebot --name Example output1.xml output2.xml

Run robot --help and rebot --help for more information about the command line usage. For a complete reference manual see Robot Framework User Guide.

Documentation

Support and contact

Contributing

Interested to contribute to Robot Framework? Great! In that case it is a good start by looking at the Contribution guidelines. If you do not already have an issue you would like to work on, you can check issues with good new issue and help wanted labels.

Remember also that there are many other tools and libraries in the wider Robot Framework ecosystem that you can contribute to!

License

Robot Framework is open source software provided under the Apache License 2.0. Robot Framework documentation and other similar content use the Creative Commons Attribution 3.0 Unported license. Most libraries and tools in the ecosystem are also open source, but they may use different licenses.

Comments
  • New `SKIP` status for tests (discussion)

    New `SKIP` status for tests (discussion)

    There have been several requests to be able to mark tests skipped: #812, #837, #964, #1732, #2064. Some of them use different term than skip (e.g. warn or blacklist) but the basic idea is similar.

    So far all such requests have been rejected because Robot Framework already has a concept of non-critical tests and non-critical failures with a clear error message can be used to emulate skipping. I'm not inherently against skipping, though, and see that explicit SKIP status would often be more clear than non-critical FAIL. Many other test tool also has such status and being compatible with them would be nice.

    I'm not planning to implement this functionality in the foreseeable future, but I wanted to open an issue about it to have a place where to discuss it. The main problem with implementation is that it would be quite a big task. The first step would be designing how the functionality actually should work. At least these things should be taken into account:

    1. How to mark a test skipped. Possibilities include:
      • Based on tags from the command line.
      • Using a BuiltIn keyowrd.
      • Using a custom exception in a test library.
    2. How skipped tests affect statistics?
    3. How skipped tests affect overall execution result? What should the report background be if there are passed and skipped tests in a suite? What if there are only skipped?

    I encourage people interested about the skip status to comment here or possibly start a discussion on the robotframework-users mailing list or on the new Slack community. If we can agree with the overall design, someone can then start actually implementing the functionality.

    duplicate enhancement priority: high 
    opened by pekkaklarck 132
  • Missing/misspelled variable name recommendations

    Missing/misspelled variable name recommendations

    This is the equivalent of PR #1776 but for variables instead of keywords.

    I've moved some of the reusable recommendation code from namespace.py to utils/match.py in a new FuzzyMatcher class. Trying to balance code duplication and complexity in this refactoring was tricky, so criticism/ideas are welcome.

    There are a lot of special cases for variable naming, including accessing variable indexes, accessing extended variables, and accessing nested variables. I have only partially handled these special cases - recommendations for misspellings of the base variable name will generally work, but anything more complex will not work, and the recommendations will not include the index or extended variable syntax.

    I reworded some of the missing variable error messages, just to make them subjectively sound better. For example, Non-existing variable '%s' is now Variable '%s' not found. This breaks many tests throughout atest, but in this PR I have not fixed those tests yet. I'll fix them if this rewording/rephrasing is approved.

    For example recommendations, please see the new test cases I've added.

    opened by guykisel 56
  • [ ERROR ] Unexpected error: IOError: [Errno 0] Error

    [ ERROR ] Unexpected error: IOError: [Errno 0] Error

    My tests starts to fall down. Everything worked fine until I update my Windows 10 two days ago. I downgrade windows but this doesn't help. I also tried to upgrade robot framework and selenium2library and this doesn't helped. This bug occurs for every browser I used (chrome, ff and edge).

    [ ERROR ] Unexpected error: IOError: [Errno 0] Error Traceback (most recent call last): File "c:\python27\lib\site-packages\robot\utils\application.py", line 83, in _execute rc = self.main(arguments, **options) File "c:\python27\lib\site-packages\robot\run.py", line 445, in main result = suite.run(settings) File "c:\python27\lib\site-packages\robot\running\model.py", line 248, in run self.visit(runner) File "c:\python27\lib\site-packages\robot\model\testsuite.py", line 161, in visit visitor.visit_suite(self) File "c:\python27\lib\site-packages\robot\model\visitor.py", line 86, in visit_suite suite.suites.visit(self) File "c:\python27\lib\site-packages\robot\model\itemlist.py", line 76, in visit item.visit(visitor) File "c:\python27\lib\site-packages\robot\model\testsuite.py", line 161, in visit visitor.visit_suite(self) File "c:\python27\lib\site-packages\robot\model\visitor.py", line 87, in visit_suite suite.tests.visit(self) File "c:\python27\lib\site-packages\robot\model\itemlist.py", line 76, in visit item.visit(visitor) File "c:\python27\lib\site-packages\robot\model\testcase.py", line 74, in visit visitor.visit_test(self) File "c:\python27\lib\site-packages\robot\running\runner.py", line 159, in visit_test self._output.end_test(ModelCombiner(test, result)) File "c:\python27\lib\site-packages\robot\output\output.py", line 59, in end_test LOGGER.end_test(test) File "c:\python27\lib\site-packages\robot\output\logger.py", line 183, in end_test logger.end_test(test) File "c:\python27\lib\site-packages\robot\output\console\verbose.py", line 51, in end_test self._writer.status(test.status, clear=True) File "c:\python27\lib\site-packages\robot\output\console\verbose.py", line 114, in status self._clear_status() File "c:\python27\lib\site-packages\robot\output\console\verbose.py", line 124, in _clear_status self._write_info() File "c:\python27\lib\site-packages\robot\output\console\verbose.py", line 90, in _write_info self._stdout.write(self._last_info) File "c:\python27\lib\site-packages\robot\output\console\highlighting.py", line 51, in write self.stream.write(console_encode(text, stream=self.stream))

    bug priority: medium 
    opened by flywojt 50
  • Library for date/time conversion and calculation

    Library for date/time conversion and calculation

    Originally submitted to Google Code by tookko on 15 Oct 2009

    Similar to "Convert to Integer", "Convert to Date / Datetime" (e.g. using strptime() for strings) would be useful when you need to do date comparison.

    enhancement priority: critical 
    opened by spooning 44
  • Fix JavadocTool import for Java9 and up

    Fix JavadocTool import for Java9 and up

    JavadocTool, Messager and ModifierFilter is moved to a different package since Jigsaw.

    Checked with

    • openjdk version "10.0.1" 2018-04-17 OpenJDK Runtime Environment (build 10.0.1+10-Ubuntu-3ubuntu1)
    • java version "9.0.4" Java(TM) SE Runtime Environment (build 9.0.4+11)
    • java version "1.8.0_171" Java(TM) SE Runtime Environment (build 9.0.4+11)
    opened by ghost 42
  • New listener API that gets real suite/test objects as arguments and can modify them

    New listener API that gets real suite/test objects as arguments and can modify them

    Originally submitted to Google Code by bryan.oakley on 27 Aug 2012

    I would like to see a listener mode that passes the actual objects to the listeners rather than just a few attributes. For example, I would like to be able to write a listener like this:

    ROBOT_LISTENER_API_VERSION = 3
    def start_suite(suite):
        print "starting suite", suite.name
    

    Likewise for test cases and keywords.

    Implementation is pretty straight-forward. In robot/output/listeners.py a new clause would be added for each method. For example:

    def start_suite(self, suite):
        for li in self._listeners:
            if li.version == 1:
                li.call_method(li.start_suite, suite.name, suite.doc)
            elif li.version == 2:
                attrs = self._get_start_attrs(suite, 'metadata')
                attrs.update({'tests' : [t.name for t in suite.tests],
                              'suites': [s.name for s in suite.suites],
                              'totaltests': suite.get_test_count()})
                li.call_method(li.start_suite, suite.name, attrs)
            elif li.version == 3: 
                li.call_method(li.start_suite, suite)
    

    This takes a big step forward toward being able to control a test run via the listener interface. The next step would be to put methods on the objects that control the state of the test run. For example, a start_suite listener might do something like 'suite.fail("blah blah")' to cause the suite to fail at the point the listener was called.

    The modification of the objects is not the subject of this feature request; that will come in a later feature request. This request is solely for the ability for the listener interface to pass the objects to the listeners.


    UPDATE: Jump to this comment to skip old discussion and to see how this new API is actually going to be implemented.

    enhancement priority: critical beta 1 
    opened by spooning 42
  • Keyword visibility modifiers for resource files

    Keyword visibility modifiers for resource files

    Originally submitted to Google Code by tookko on 19 Nov 2009

    Complicated user keywords in resource files are typically built by breaking the desired functionality into smaller, lower level user keywords which are then used by the higher level user keyword. For maintainability purposes it's often desirable that the lower level keywords are not used directly from test cases, but only the higher level ones.

    While this can be tackled softly by usage of documentation tags, it would be useful to have a [Private] modifier for keywords, which would make it not possible to use the keyword from outside the same resource file.

    enhancement priority: high alpha 1 
    opened by spooning 42
  • Ability to register custom converters for keyword arguments

    Ability to register custom converters for keyword arguments

    *** Test Cases ***
    Example
        do thing    09/15/2021
    

    maybe something like

    @deco.keyword(converters={date: parse_date})
    def do_thing(value: date):
        ...
    
    def parse_date(value: str) -> date:
        ...
    
    enhancement priority: critical alpha 1 
    opened by DetachHead 41
  • Given/When/Then should support other languages than English

    Given/When/Then should support other languages than English

    Originally submitted to Google Code by Andreas.EbbertKarroum on 30 Mar 2010

    When issue 500 is implemented, it would be nice to supply with the [Template] keyword not only the test case that should be used, but also, in what language that template is written.

    When I say

    [Template] User Login en

    RF will ignode prefixes "Given", "When", "Then", and "And" from keywords. When I specify another language, like "de", then "Gegeben", "Wenn", "Dann", and "Und".

    This has already been briefly discussed in the user group: http://groups.google.com/group/robotframework-users/browse_thread/thread/488c5bc04ab2315d/7f81d5b118e7aa7a?lnk=gst&q=german#7f81d5b118e7aa7a

    enhancement priority: critical alpha 1 
    opened by spooning 40
  • Support alternative xUnit (JUnit) formats

    Support alternative xUnit (JUnit) formats

    Please add support for creating JUnit xml output report, we need this badly. Since most other tool support that. Like right now we have pybot -x for generating xUnit xml format report files. Similarly plz add support to generate JUnit xml format report file.

    Or maybe point me to some script which will convert robot output.xml to JUnit format (http://llg.cubic.org/docs/junit/)

    enhancement wont fix 
    opened by mverma-va 37
  • Add plain text syntax support into reStructuredText parser

    Add plain text syntax support into reStructuredText parser

    Originally submitted to Google Code by datakurre on 29 Jul 2013

    There's an on-going GSOC (2013) project for enhancing the current ReST-parser to support plain text test syntax (in addition to the current table syntax, which is based on HTML parser).

    https://www.google-melange.com/gsoc/project/google/gsoc2013/vivekkodu/16001

    The GSOC project is coordinated by Plone Foundation, because there has been a lot of interest in Plone community for embedding Robot Framework tests into ReST-based documentation similarly to Python doctests. The work for the GSOC project is done by Vivek Kumar Verma (https://github.com/vivekkodu/). I'm mentoring the project.

    My hope is that someone from the core team could review the current work and file GitHub issues because the GitHub repo exists solely for this feature) for raised issues that should fixed to make the mergeable for Robot Framework core:

    https://github.com/datakurre/robotframework/compare/GSOC2013

    or

    https://github.com/datakurre/robotframework/compare/GSOC2013.patch

    The design decisions for this feature have been discussed earlier at: https://groups.google.com/forum/#!topic/robotframework-devel/XrnrkSUq0KI

    enhancement priority: high 
    opened by spooning 36
  • How to store Value returned from 1st keyword and then using that value in another keywords without running the 1st keyword again in robot framework

    How to store Value returned from 1st keyword and then using that value in another keywords without running the 1st keyword again in robot framework

    I struck in one problem in which I want to store Value returned from 1st keyword in variable during initial run and then using that variable in another keywords without running the 1st keyword again .

    I tried below code but not able to resolve the issue.

    Create Account Post Request
        ${response}=    call post request    ${headers2}    ${base_url}   ${base_url_account}    ${account_data}
        log    ${response}
        Should Be True     ${response.status_code} == 201
        ${account_id}    get value from json     ${response.json()}    id
        log    ${account_id}
        RETURN    ${account_id}
    
    Get Network ID    --> [While running this keyword Create Account Post Request will run again which updates the account ID which I don't want]
        ${acc}=   Create Account Post Request  --> [During this It will run Create Account Post Request again which I don't want]
        log    ${acc}
    

    My questions are :

    1. How to use account_ID in any keywords without running the first keyword again and again ?
    2. How to use return value from 1st keyword in any other keywords? [Condition, I don't want to run 1st keyword again to get the return value]

    Below scenario is expected :

    1. 1st Keyword ran
    2. 1st Keyword return some value
    3. Store value in some variable
    4. Use returned value anywhere in the suite file, in any keyword within the suite, in any test case .
    opened by dhingrachirag 0
  • Strip `Given/When/Then` prefix for keywords that start with a variable

    Strip `Given/When/Then` prefix for keywords that start with a variable

    When using Given/When/Then/etc to match keywords that start with a variable ${...}, then Give/When/Then is captured into the variable value.

    According to Ignoring Given/When/Then/And/But prefixes,

    Prefixes Given, When, Then, And and But are dropped when matching keywords are searched, if no match with the full name is found

    Is there a builtin method to reverse this logic such that it checks for the prefix-dropped version first?

    *** Keywords ***
    ${url} is open
        Log To Console           Open "${url}"
    
    ${ele} is clicked
        Log To Console           Click "${ele}"
    
    ${ele} should be visible
        Log To Console           Is Visible "${ele}"
    
    
    *** Variables ***
    ${url}          https://google.com
    ${btn_1}        xpath=//a/b/c
    ${modal_2}      xpath=//a/b/c
    
    
    *** Test Cases ***
    Valid Login
        Given ${url} is open
        When ${btn_1} is clicked
        Then ${modal_2} should be visible
    

    Outputs

    Open "Given https://google.com"
    Click "When xpath=//a/b/c"
    Is Visible "Then xpath=//a/b/c"
    

    Wanted output

    Open "https://google.com"
    Click "xpath=//a/b/c"
    Is Visible "xpath=//a/b/c"
    

    I can get this behaviour by changing https://github.com/robotframework/robotframework/blob/master/src/robot/running/namespace.py#L292-L298 to

            runner = self._get_runner_from_suite_file(name)
            if not runner and '.' in name:
                runner = self._get_explicit_runner(name)
            if not runner:
                runner = self._get_bdd_style_runner(name)
            if not runner:
                runner = self._get_implicit_runner(name)
    
    opened by allanlei 0
  • Make the WHILE loop condition optional

    Make the WHILE loop condition optional

    As discussed in issue #4562, if no condition is set on the WHILE loop, the condition should be True by default.

    Here is an example :

    *** Test Cases ***
    Optional WHILE loop condition
        WHILE
            Log     Test
        END
    
    enhancement priority: medium 
    opened by asaout 1
  • Add `on_limit_message` option on the WHILE loop

    Add `on_limit_message` option on the WHILE loop

    Currently, the error raised when the limit of the WHILE loop is reached isn't customizable. As a result of the issue #4562, we decided to add an option named on_limit_message on the WHILE loop.

    Here is an example :

    *** Test Cases ***
    On limit message
        WHILE    True    limit=5    on_limit_message=Custom error message
            Log     Test
        END
    
    enhancement priority: medium pr 
    opened by asaout 1
  • Keywords run by end_suite are not in the teardown context

    Keywords run by end_suite are not in the teardown context

    If a listener runs a keyword in the end_suite handler, in the context of that keyword, the in_teardown is false.

    test.robot

    *** Settings ***
    Library           ContextAccess.py
    Suite Teardown    Run Keywords    In Teardown Should Be True
    
    *** Test Cases ***
    Placeholder
        No Operation
    

    Listener.py

    from robot.libraries.BuiltIn import BuiltIn
    
    ROBOT_LISTENER_API_VERSION = 2
    
    
    def end_suite(name, attributes):
        BuiltIn().run_keyword('In Teardown Should Be True')
    

    ContextAccess.py

    from robot.running.context import EXECUTION_CONTEXTS
    from robot.libraries.BuiltIn import BuiltIn
    
    
    def in_teardown_should_be_true():
        BuiltIn().run_keyword('Should Be True',
                              EXECUTION_CONTEXTS.current.in_teardown)
    

    Running robot --listener Listener.py .\test.robot results in a failure: image

    opened by rousku 0
  • Timer In Timeout was killed while waiting for raised timeout

    Timer In Timeout was killed while waiting for raised timeout

    Recently, I am running a project with pabot, and I found that sometimes the app stocked. And I attach and see the stack, found that the timer was killed before it work out. So that the robot app cannot stop. Specfically, the code is here. image

    I think we might need to consider this condition in the sleep(0) loop to avoid this.

    opened by Zoupers 1
Releases(v6.0.1)
  • v6.0.1(Nov 3, 2022)

    Robot Framework 6.0.1 is the first bug fix release in the RF 6.0 series. It mainly fixes a bug in using localized BDD prefixes consisting of more than one word (#4515) as well as a regression related to the library search order (#4516).

    For more details see the full release notes.

    Source code(tar.gz)
    Source code(zip)
  • v6.0(Oct 19, 2022)

    Robot Framework 6.0 is a new major release that starts Robot Framework's localization efforts. In addition to that, it contains several nice enhancements related to, for example, automatic argument conversion and using embedded arguments. Initially it had version 5.1 and was considered a feature release, but it grow so big that we decided to call it a major release instead.

    For more details see the full release notes.

    Source code(tar.gz)
    Source code(zip)
  • v6.0rc2(Oct 11, 2022)

    Robot Framework 6.0 is a new major release that starts Robot Framework's localization efforts. In addition to that, it contains several nice enhancements related to, for example, automatic argument conversion and using embedded arguments. Robot Framework 6.0 rc 2 is the second and hopefully the last release candidate containing all features and fixes planned to be included in the final release.

    Robot Framework 6.0 was initially labeled Robot Framework 5.1 and considered a feature release. In the end it grow so big that we decided to make it a major release instead.

    For more details see the full release notes.

    Source code(tar.gz)
    Source code(zip)
  • v6.0rc1(Sep 29, 2022)

    Robot Framework 6.0 is a new major release that starts Robot Framework's localization efforts. In addition to that, it contains several nice enhancements related to, for example, automatic argument conversion and using embedded arguments. Robot Framework 6.0 rc 1 is the first and hopefully also the last release candidate containing all features and fixes planned to be included in the final release.

    Robot Framework 6.0 was initially labeled Robot Framework 5.1 and considered a feature release. In the end it grow so big that we decided to make it a major release instead.

    For more details see the full release notes.

    Source code(tar.gz)
    Source code(zip)
  • v5.1b2(Sep 21, 2022)

    Robot Framework 5.1 is a new feature release that starts Robot Framework's localization efforts and also brings in other nice enhancements. Robot Framework 5.1 preview releases are targeted especially for people interested in translations.

    For more details see the full release notes.

    Source code(tar.gz)
    Source code(zip)
  • v5.1b1(Sep 2, 2022)

    Robot Framework 5.1 is a new feature release that starts Robot Framework's localization efforts and also brings in other nice enhancements. Robot Framework 5.1 preview releases are targeted especially for people interested in translations.

    For more details see the full release notes.

    Source code(tar.gz)
    Source code(zip)
  • v5.1a2(Jul 21, 2022)

    Robot Framework 5.1 is a new feature release that starts Robot Framework's localization efforts and also brings in other nice enhancements. Robot Framework 5.1 alpha releases are targeted especially for people interested in translations.

    For more details see the full release notes.

    Source code(tar.gz)
    Source code(zip)
  • v5.1a1(Jul 15, 2022)

    Robot Framework 5.1 is a new feature release that starts Robot Framework's localization efforts and also brings in other nice enhancements. Robot Framework 5.1 alpha 1 is the first preview release targeted especially for people interested in translations.

    For more details see the full release notes.

    Source code(tar.gz)
    Source code(zip)
  • v5.0.1(May 16, 2022)

  • v5.0.1rc1(May 9, 2022)

    Robot Framework 5.0.1 is the first and also the last planned bug fix release in the Robot Framework 5.0.x series. This release candidate contains all issues targeted to the final release.

    For more details see the full release notes.

    Source code(tar.gz)
    Source code(zip)
  • v5.0(Mar 23, 2022)

    Robot Framework 5.0 is a big new major release with lot of interesting new features such as TRY/EXCEPT, WHILE, inline IF, RETURN, BREAK and CONTINUE syntax, support for custom argument conversion in libraries and various enhancements to xUnit outputs. Robot Framework 5.0 only works with Python 3.6 or newer.

    For more details see the full release notes.

    Source code(tar.gz)
    Source code(zip)
  • v5.0rc2(Mar 18, 2022)

    Robot Framework 5.0 is a big new major release with lot of interesting new features such as TRY/EXCEPT, WHILE, inline IF, RETURN, BREAK and CONTINUE syntax, support for custom argument conversion in libraries and various enhancements to xUnit outputs. Robot Framework 5.0 only works with Python 3.6 or newer.

    Robot Framework 5.0 release candidate 2 contains all planned features and code changes. Please test the release candidate in your environment and report possible problems! The final release is targeted for Wednesday, March 23, 2022.

    For more details see the full release notes.

    Source code(tar.gz)
    Source code(zip)
  • v5.0b1(Feb 11, 2022)

    Robot Framework 5.0 is a big new major release with lot of interesting new features such as TRY/EXCEPT, WHILE, inline IF, RETURN, BREAK and CONTINUE syntax, support for custom argument conversion in libraries and various enhancements to xUnit outputs. Robot Framework 5.0 only works with Python 3.6 or newer. Robot Framework 5.0 beta 1 is the second preview release and contains majority of the planned new features.

    For more details see the full release notes.

    Source code(tar.gz)
    Source code(zip)
  • v5.0a1(Jan 27, 2022)

    Robot Framework 5.0 is a big new major release with lot of interesting new features such as TRY/EXCEPT, WHILE, inline IF, RETURN, BREAK and CONTINUE syntax, support for custom argument conversion in libraries and various enhancements to xUnit outputs. Robot Framework 5.0 only works with Python 3.6 or newer. Robot Framework 5.0 alpha 1 is the first preview release with all the planned new syntax implemented.

    For more details see the full release notes.

    Source code(tar.gz)
    Source code(zip)
  • v4.1.3(Dec 15, 2021)

    Robot Framework 4.1.3 contains a fix to a regression related to parsing reStructuredText files (#4124) that was introduced in Robot Framework 4.1.2.

    Source code(tar.gz)
    Source code(zip)
  • v4.1.2(Oct 15, 2021)

    Robot Framework 4.1.2 contains a considerable enhancement to memory usage along with some bug fixes. It is the last planned release in the whole Robot Framework 4.x series and also the last planned release to support Python 2 that itself has not been supported since January 2020. Unfortunately this also means the end of our Jython and IronPython support, at least until they get Python 3 compatible versions released.

    For more details see the full release notes.

    Source code(tar.gz)
    Source code(zip)
  • v4.1.1(Sep 8, 2021)

  • v4.1(Jul 19, 2021)

  • v4.0.3(May 25, 2021)

  • v4.0.2(May 11, 2021)

    Robot Framework 4.0.2 is the second and the last planned bug fix release in the Robot Framework 4.0.x series. It fixes some problems in the earlier Robot Framework 4.0 and 4.0.1 releases. For more information see the full release notes.

    Source code(tar.gz)
    Source code(zip)
  • v4.0.1(Apr 8, 2021)

    Robot Framework 4.0.1 is the first bug fix release in the Robot Framework 4.0.x series. It fixes several severe and not so severe issues reported since Robot Framework 4.0 was released. For more information see the full release notes.

    Source code(tar.gz)
    Source code(zip)
  • v4.0.1b1(Apr 1, 2021)

    Robot Framework 4.0.1 is the first bug fix release in the Robot Framework 4.0.x series. This beta release contains fixes to all issues that have been reported so far, but if more problems are encountered they can still be fixed before the final Robot Framework 4.0.1 release. For more information see the full release notes.

    Source code(tar.gz)
    Source code(zip)
  • v4.0(Mar 11, 2021)

    Robot Framework 4.0 is a new major release with lot of big new features. Highlights include the SKIP status and native IF/ELSE support as well as enhancements to, for example, type conversion and Libdoc. For more details see the full release notes.

    Source code(tar.gz)
    Source code(zip)
  • v4.0rc2(Mar 10, 2021)

    Robot Framework 4.0 is a new major release with lot of big new features such as the SKIP status and native IF/ELSE support as well as enhancements to, for example, type conversion and Libdoc. Robot Framework rc 2 contains all planned changes, and changes compared to the earlier rc 1 a minimal. The final version is planned to be released on Thursday Match 11, 2021.

    For more information about Robot Framework 4.0 rc 2 see the full release notes.

    Source code(tar.gz)
    Source code(zip)
  • v4.0rc1(Mar 5, 2021)

    Robot Framework 4.0 is a new major release with lot of big new features such as the SKIP status and native IF/ELSE support as well as enhancements to, for example, type conversion and Libdoc. Robot Framework rc 1 contains all planned changes and if no problems are found the final version will be released on Thursday Match 11, 2021.

    For more information about Robot Framework 4.0 rc 1 see the full release notes.

    Source code(tar.gz)
    Source code(zip)
  • v4.0b3(Feb 16, 2021)

    Robot Framework 4.0 is a new major release with lot of big new features such as the SKIP status and native IF/ELSE support as well as enhancements to, for example, type conversion and Libdoc. Robot Framework beta 3 contains all planned new features but small changes are still possible before the first release candidate.

    For more information about Robot Framework 4.0 beta 3 see the full release notes.

    Source code(tar.gz)
    Source code(zip)
  • v4.0b1(Nov 30, 2020)

    Robot Framework 4.0 is a new major release with lot of big new features such as the SKIP status and native IF/ELSE support as well as enhancements to, for example, type conversion and Libdoc. Robot Framework beta 1 already contains most of the planned new features and internal changes.

    For more information about Robot Framework 4.0 beta 1 see the full release notes.

    Source code(tar.gz)
    Source code(zip)
  • v3.2.2(Sep 1, 2020)

  • v3.2.1(Jul 30, 2020)

  • v3.2(Apr 27, 2020)

    Robot Framework 3.2 is a new major release with an enhanced test data parser, handy @library and @not_keyword decorators, enhanced Libdoc spec files for external tools, inline Python evaluation support, and many other interesting new features and lot of bug fixes.

    For more information see the full release notes.

    Source code(tar.gz)
    Source code(zip)
Python HTTP Server

Python HTTP Server Preview Languange and Code Editor: How to run? Download the zip first. Open the http.py and wait 1-2 seconds. You will see __pycach

SonLyte 16 Oct 21, 2021
Hypothesis is a powerful, flexible, and easy to use library for property-based testing.

Hypothesis Hypothesis is a family of testing libraries which let you write tests parametrized by a source of examples. A Hypothesis implementation the

Hypothesis 6.4k Jan 01, 2023
A utility for mocking out the Python Requests library.

Responses A utility library for mocking out the requests Python library. Note Responses requires Python 2.7 or newer, and requests = 2.0 Installing p

Sentry 3.8k Jan 02, 2023
Waitress - A WSGI server for Python 2 and 3

Waitress Waitress is a production-quality pure-Python WSGI server with very acceptable performance. It has no dependencies except ones which live in t

Pylons Project 1.2k Dec 30, 2022
A screamingly fast Python 2/3 WSGI server written in C.

bjoern: Fast And Ultra-Lightweight HTTP/1.1 WSGI Server A screamingly fast, ultra-lightweight WSGI server for CPython 2 and CPython 3, written in C us

Jonas Haag 2.9k Dec 21, 2022
splinter - python test framework for web applications

splinter - python tool for testing web applications splinter is an open source tool for testing web applications using Python. It lets you automate br

Cobra Team 2.6k Dec 27, 2022
Generic automation framework for acceptance testing and RPA

Robot Framework Introduction Installation Example Usage Documentation Support and contact Contributing License Introduction Robot Framework is a gener

Robot Framework 7.7k Dec 31, 2022
AWS Lambda & API Gateway support for ASGI

Mangum Mangum is an adapter for using ASGI applications with AWS Lambda & API Gateway. It is intended to provide an easy-to-use, configurable wrapper

Jordan Eremieff 1.2k Jan 06, 2023
A cross-platform GUI automation Python module for human beings. Used to programmatically control the mouse & keyboard.

PyAutoGUI PyAutoGUI is a cross-platform GUI automation Python module for human beings. Used to programmatically control the mouse & keyboard. pip inst

Al Sweigart 7.6k Jan 01, 2023
Robyn is an async Python backend server with a runtime written in Rust, btw.

Robyn is an async Python backend server with a runtime written in Rust, btw. Python server running on top of of Rust Async RunTime. Installation

Sanskar Jethi 1.8k Dec 30, 2022
Let your Python tests travel through time

FreezeGun: Let your Python tests travel through time FreezeGun is a library that allows your Python tests to travel through time by mocking the dateti

Steve Pulec 3.5k Jan 09, 2023
Radically simplified static file serving for Python web apps

WhiteNoise Radically simplified static file serving for Python web apps With a couple of lines of config WhiteNoise allows your web app to serve its o

Dave Evans 2.1k Jan 08, 2023
Meinheld is a high performance asynchronous WSGI Web Server (based on picoev)

What's this This is a high performance python wsgi web server. And Meinheld is a WSGI compliant web server. (PEP333 and PEP3333 supported) You can als

Yutaka Matsubara 1.4k Jan 01, 2023
Green is a clean, colorful, fast python test runner.

Green -- A clean, colorful, fast python test runner. Features Clean - Low redundancy in output. Result statistics for each test is vertically aligned.

Nathan Stocks 756 Dec 22, 2022
livereload server in python (MAINTAINERS NEEDED)

LiveReload Reload webpages on changes, without hitting refresh in your browser. Installation python-livereload is for web developers who know Python,

Hsiaoming Yang 977 Dec 14, 2022
Coroutine-based concurrency library for Python

gevent Read the documentation online at http://www.gevent.org. Post issues on the bug tracker, discuss and ask open ended questions on the mailing lis

gevent 5.9k Dec 28, 2022
Mimesis is a high-performance fake data generator for Python, which provides data for a variety of purposes in a variety of languages.

Mimesis - Fake Data Generator Description Mimesis is a high-performance fake data generator for Python, which provides data for a variety of purposes

Isaak Uchakaev 3.8k Jan 01, 2023
Faker is a Python package that generates fake data for you.

Faker is a Python package that generates fake data for you. Whether you need to bootstrap your database, create good-looking XML documents, fill-in yo

Daniele Faraglia 15.2k Jan 01, 2023
PyQaver is a PHP like WebServer for Python.

PyQaver is a PHP like WebServer for Python.

Dev Bash 7 Apr 25, 2022
A modern API testing tool for web applications built with Open API and GraphQL specifications.

Schemathesis Schemathesis is a modern API testing tool for web applications built with Open API and GraphQL specifications. It reads the application s

Schemathesis.io 1.6k Jan 04, 2023