是否可以使用 Pytest 运行 Robot Framework 单元测试?

Is it possible to run Robot Framework's unittests with Pytest?

Robot Framework has a great set of unit tests which are implemented using Python's unittest module. I wonder if these tests can be run with Pytest and if somebody has already tried to do so. At least Pytest's docu says that it can deal with regular Python unittest.

编辑:更准确地说。我想 运行 Robot 使用 Pytest 而不是 Python 的 unittest 模块进行 1000 多个单元测试。例如。现在你必须 运行 python run.py 在 RF 的 repo 的 utest 文件夹中执行所有单元测试。所以我实际上要问的是 如何修改 run.py 以便它使用 Pytest 框架 而不是 unittest 框架?

我认为最棘手的部分在这里:

if __name__ == '__main__':
    docs, vrbst = parse_args(sys.argv[1:])
    tests = get_tests()
    suite = unittest.TestSuite(tests)
    runner = unittest.TextTestRunner(descriptions=docs, verbosity=vrbst)
    result = runner.run(suite)
    rc = len(result.failures) + len(result.errors)
    if rc > 250:
        rc = 250
    sys.exit(rc)

尤其是:

suite = unittest.TestSuite(tests)
runner = unittest.TextTestRunner(descriptions=docs, verbosity=vrbst)

我已经可以 运行 通过将 pytest 指向具体的测试文件来进行单一测试,例如pytest utest/api/test_exposed_api.py。但是如果我尝试 运行 utest 文件夹中的所有单元测试 pytest utest/ 我只会收到错误和警告:(

简短回答:是的! :)))

长答案:我只需要编辑 run.py 中的两行并且对结果几乎满意

  1. import unittest下方添加import pytest
  2. 编辑 if __name__ == '__main__': 部分,使其看起来像这样:

    if __name__ == '__main__':
        docs, vrbst = parse_args(sys.argv[1:])
        tests = get_tests()
        pytest.main()
    

然后在 utest 文件夹中调用 python run.py 和测试 运行 :)))

    1532 passed, 45 warnings, 1 error in 9.70 seconds

显然在 run.py 中有更多的东西不是 pytest 所必需的并且可以被清除......但我还不是 python 专家(还)