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
  • RF doc links should be able to open to a new page

    RF doc links should be able to open to a new page

    The HTML of the RF documentation is such one can only open a doc on the same page. Most of the time I need to open a number of them so have to open multiple pages. The current design breaks a very common use pattern of allowing the user to choose how to open a link.

    http://robotframework.org/robotframework/

    opened by glueologist 0
  • BuiltIn.Log To Console doesn't append a line before printing message

    BuiltIn.Log To Console doesn't append a line before printing message

    Hi,

    I am aware that the Log To Console keyword appends a new line after the message is printed, but that means that every first logged message will end up being printed in the same line of whatever was printed before during the execution of the test suite (e.g. the test case name). I think that the new line should be added before, and not after.

    opened by eduvfalc 2
  • New `robot:flatten` tag for

    New `robot:flatten` tag for "flattening" keyword structures

    Introduction

    With nested keyword structures, especially with recursive keyword calls and with WHILE and FOR loops, the log file can get hard do understand with many different nesting levels. Such nested structures also increase output.xml size, because even a simple keyword like

    *** Keywords ***
    Keyword
        Log    Robot
        Log    Framework
    

    creates this much content:

    <kw name="Keyword">
    <kw name="Log" library="BuiltIn">
    <arg>Robot</arg>
    <doc>Logs the given message with the given level.</doc>
    <msg timestamp="20230103 20:06:36.663" level="INFO">Robot</msg>
    <status status="PASS" starttime="20230103 20:06:36.663" endtime="20230103 20:06:36.663"/>
    </kw>
    <kw name="Log" library="BuiltIn">
    <arg>Framework</arg>
    <doc>Logs the given message with the given level.</doc>
    <msg timestamp="20230103 20:06:36.663" level="INFO">Framework</msg>
    <status status="PASS" starttime="20230103 20:06:36.663" endtime="20230103 20:06:36.664"/>
    </kw>
    <status status="PASS" starttime="20230103 20:06:36.663" endtime="20230103 20:06:36.664"/>
    </kw>
    

    We have had --flattenkeywords option for "flattening" such structures since RF 2.8.2 (#1551) and it works great. When a keyword is flattened, its child keywords and control structures are removed otherwise, but all their messages are preserved. It doesn't affect output.xml generated during execution, but flattening happens when output.xml files are parsed and can save huge amounts of memory. When --flattenkeywords is used with Rebot, it is possible to create a new flattened output.xml. For example, the above structure is converted into this if Keyowrd is flattened:

    <kw name="Keyword">
    <doc>_*Content flattened.*_</doc>
    <msg timestamp="20230103 20:06:36.663" level="INFO">Robot</msg>
    <msg timestamp="20230103 20:06:36.663" level="INFO">Framework</msg>
    <status status="PASS" starttime="20230103 20:06:36.663" endtime="20230103 20:06:36.664"/>
    </kw>
    

    Proposal

    Flattening works based on keyword names and based on tags, but it needs to be activated separately from the command line. This issue proposes adding new built-in tag robot:flatten that activates this behavior automatically. Removing top level keywords from tests and leaving only their messages doesn't make sense, so robot:flatten should be usable only as a keyword tag.

    This functionality should work already during execution so that flattened keywords and control structures are never written to output.xml file. This avoid output.xml file growing big and is likely to also enhance the performance a bit.

    Open questions

    There are some open questions related to the design still:

    • [ ] Should start/end_keyword listener methods be called with flattened keywords? I believe not, but I don't feel too strongly about this.
    • [ ] Should we add Content flattened to keyword documentation like we do with --flattenkeywords? I believe not. There's the robot:flatten tag to indicate that anyway.
    • [ ] Should --flattenkeywords be changed to work during execution as well? I believe yes, but that requires a separate issue.
    • [ ] Should automatic TRACE level logging of arguments and return values of flattened keywords be disabled? I believe yes, but this isn't high priority.

    Possible future enhancements

    --flattenkeywords allows flattening WHILE or FOR loops or all loop iterations. Something like that would be convenient with built-in tags as well. We could consider something like robot:flatten:while and robot:flatten:iteration to support that, but I believe that's something that can wait until future versions.

    Another alternative would be allowing tags with control structures as shown in the example below. This would require parser and model changes but could also have other use cases. That's certainly out of the scope of RF 6.1, though.

    *** Keywords ***
    Keyword
        WHILE    True
            [Tags]    robot:flatten
            Nested
        END
    
    enhancement priority: high effort: medium 
    opened by pekkaklarck 0
  • Possibility to give a custom name to a suite using `Name` setting

    Possibility to give a custom name to a suite using `Name` setting

    Suite names are got from file or directory names by default so that, for example, example_suite.robot creates a suite Example Suite. This works fine in general, but makes it inconvenient or even impossible to use special characters like ! or _. Longer suite names can also be inconvenient as file/directory names. An easy solution to allow using whatever names is adding a new Name. The name would still be set based on the file/directory name by default, but this new setting would allow overriding it.

    Being able to set a custom name for suites like this would make issue #4015 more powerful. Without this you needed to use the --name option in addition to __init__.robot files to be able to fully configure the virtual top level suite created when executing multiple files/directories.

    This change only affects parsing and is fairly straightforward. This is a good issue for anyone interested to get more familiar with Robot's parser!

    enhancement priority: medium good first issue effort: small 
    opened by pekkaklarck 0
  • Run Keyword in custom lib init  cause

    Run Keyword in custom lib init cause "Incompatible child element 'kw' for 'robot'" issue

    1 Test3.py init use run keyword to invoke an external KW

    #!/usr/bin/python3
    from robot.libraries.BuiltIn import BuiltIn
    
    class Test3:
        def __init__(self):
            self.name = "Test3"
            self.builtin = BuiltIn()
            self.builtin.run_keyword("Print Log", self.name)
        def test_kw(self):
            return self.name
    
    

    2 Test Case

    *** Settings ***
    Library     ../lib/Test3.py
    
    *** Test Cases ***
    001 Run Keyword In Lib Init Issue
        [Tags]    Priority
        ${res}=    Test3.test_kw
        Should Be Equal    ${res}    Test3
    
    *** Keywords ***
    Print Log
        [Arguments]    ${msg}
        Log To Console    \n****------****\n\n${msg}\n
    

    When execute this robot file, case would pass but reporting errors while generating reports

    C:\Users\ellgjjg\Documents\work\git\trainning\training\robot\issue>robot 1__init_run_keyword.robot
    
    ****------****
    
    Test3
    
    ==============================================================================
    Init Run Keyword :: Variable priorities.
    ==============================================================================  
    001 Run Keyword In Lib Init Issue
    ****------****
    
    Test3
    
    001 Run Keyword In Lib Init Issue                                     | PASS |  
    ------------------------------------------------------------------------------  
    Init Run Keyword :: Variable priorities.                              | PASS |  
    1 test, 1 passed, 0 failed
    ==============================================================================  
    Output:  C:\Users\ellgjjg\Documents\work\git\trainning\training\robot\issue\output.xml
    [ ERROR ] Reading XML source 'C:\Users\ellgjjg\Documents\work\git\trainning\training\robot\issue\output.xml' failed: Incompatible child element 'kw' for 'robot'.
    
    Try --help for usage information.
    
    C:\Users\ellgjjg\Documents\work\git\trainning\training\robot\issue>
    

    output.zip

    I think there some issue to parse the output.xml,More importantly, the KW "Print Log" is executed twice, please help to look on this issue, We have some requirements that call external KW when lib is initialized. Thanks!

    opened by jiangliangnihao2022 0
Releases(v6.0.2)
  • v6.0.2(Jan 8, 2023)

    Robot Framework 6.0.2 is the second and also the last maintenance release in the RF 6.0 series. It does not contain any high priority fixes or enhancements and was released mainly to make it possible to fully concentrate on Robot Framework 6.1.

    For more details see the full release notes.

    Source code(tar.gz)
    Source code(zip)
  • 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)

1st Solution to QQ Browser 2021 AIAC Track 2

1st Solution to QQ Browser 2021 AIAC Track 2 This repository is the winning solution to QQ Browser 2021 AI Algorithm Competition Track 2 Automated Hyp

DAIR Lab 24 Sep 10, 2022
Selects tests affected by changed files. Continous test runner when used with pytest-watch.

This is a pytest plug-in which automatically selects and re-executes only tests affected by recent changes. How is this possible in dynamic language l

Tibor Arpas 614 Dec 30, 2022
Scraping Bot for the Covid19 vaccination website of the Canton of Zurich, Switzerland.

Hi πŸ‘‹ , I'm David A passionate developer from France. 🌱 I’m currently learning Kotlin, ReactJS and Kubernetes πŸ‘¨β€πŸ’» All of my projects are available

1 Nov 14, 2021
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 Dec 30, 2022
PyAutoEasy is a extension / wrapper around the famous PyAutoGUI, a cross-platform GUI automation tool to replace your boooring repetitive tasks.

PyAutoEasy PyAutoEasy is a extension / wrapper around the famous PyAutoGUI, a cross-platform GUI automation tool to replace your boooring repetitive t

Dingu Sagar 7 Oct 27, 2022
CNE-OVS-SIT - OVS System Integration Test Suite

CNE-OVS-SIT - OVS System Integration Test Suite Introduction User guide Discussion Introduction CNE-OVS-SIT is a test suite for OVS end-to-end functio

4 Jan 09, 2022
The source code and slide for my talk about the subject: unittesing in python

PyTest Talk This talk give you some ideals about the purpose of unittest? how to write good unittest? how to use pytest framework? and show you the ba

nguyenlm 3 Jan 18, 2022
A Python program that will log into your scheduled Google Meets hands free

Chrome GMautomation General Information This Python program will open up Chrome and log into your scheduled Google Meet with camera and mic turned off

Jonathan Leow 5 Dec 31, 2021
pywinauto is a set of python modules to automate the Microsoft Windows GUI

pywinauto is a set of python modules to automate the Microsoft Windows GUI. At its simplest it allows you to send mouse and keyboard actions to windows dialogs and controls, but it has support for mo

3.8k Jan 06, 2023
Python Testing Crawler 🐍 🩺 πŸ•·οΈ A crawler for automated functional testing of a web application

Python Testing Crawler 🐍 🩺 πŸ•·οΈ A crawler for automated functional testing of a web application Crawling a server-side-rendered web application is a

70 Aug 07, 2022
The pytest framework makes it easy to write small tests, yet scales to support complex functional testing

The pytest framework makes it easy to write small tests, yet scales to support complex functional testing for applications and libraries. An example o

pytest-dev 9.6k Jan 02, 2023
Coverage plugin for pytest.

Overview docs tests package This plugin produces coverage reports. Compared to just using coverage run this plugin does some extras: Subprocess suppor

pytest-dev 1.4k Dec 29, 2022
tidevice can be used to communicate with iPhone device

tidevice can be used to communicate with iPhone device

Alibaba 1.8k Jan 08, 2023
Minimal example of how to use pytest with automated 'devops' style automated test runs

Pytest python example with automated testing This is a minimal viable example of pytest with an automated run of tests for every push/merge into the m

Karma Computing 2 Jan 02, 2022
pytest plugin for distributed testing and loop-on-failures testing modes.

xdist: pytest distributed testing plugin The pytest-xdist plugin extends pytest with some unique test execution modes: test run parallelization: if yo

pytest-dev 1.1k Dec 30, 2022
Pymox - open source mock object framework for Python

Pymox is an open source mock object framework for Python. First Steps Installation Tutorial Documentation http://pymox.readthedocs.io/en/latest/index.

Ivan Rocha 7 Feb 02, 2022
Bayesian A/B testing

bayesian_testing is a small package for a quick evaluation of A/B (or A/B/C/...) tests using Bayesian approach.

Matus Baniar 35 Dec 15, 2022
A small faсade for the standard python mocker library to make it user-friendly

unittest-mocker Inspired by the pytest-mock, but written from scratch for using with unittest and convenient tool - patch_class Installation pip insta

Vertliba V.V. 6 Jun 10, 2022
A grab-bag of nifty pytest plugins

A goody-bag of nifty plugins for pytest OS Build Coverage Plugin Description Supported OS pytest-server-fixtures Extensible server-running framework w

Man Group 492 Jan 03, 2023
Fi - A simple Python 3.9+ command-line application for managing Fidelity portfolios

fi fi is a simple Python 3.9+ command-line application for managing Fidelity por

Darik Harter 2 Feb 26, 2022