Robot Framework有一个great set of unit tests,使用Python unittest module实现。我想知道这些测试是否可以用Pytest运行,如果有人已经尝试过这样做的话。至少Pytest's docu says that it can deal with regular Python unittest。
编辑:更准确。我想用Pytest而不是Python的单元测试模块运行Robot自己超过1000个单元测试。例如。现在你必须在RF的repo的python run.py
文件夹中运行utest
来执行所有单元测试。所以我实际要求的是如何修改run.py以便它使用Pytest框架而不是单元测试框架?
我认为最棘手的部分是:
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/
文件夹中运行所有单元测试,我只会收到错误和警告:(
答案 0 :(得分:2)
简答:是的! :)))
答案很长:我必须在run.py中只编辑两行,并且对结果非常满意
import pytest
import unittest
编辑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专家(还)