繁体   English   中英

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

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

Robot Framework 有一套很好的单元测试 ,使用Python的unittest模块实现 我想知道这些测试是否可以用Pytest运行,如果有人已经尝试过这样做的话。 至少Pytest的文档说它可以处理常规的Python单元测试

编辑:更准确。 我想用Pytest而不是Python的unittest模块运行Robot自己的1000多个单元测试。 例如,现在你必须在RF的repo的utest文件夹中运行python run.py来执行所有的单元测试。 所以我实际要求的是如何修改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 但是,如果我尝试在pytest utest/ 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专家(还)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM