Python 如何在py.test中收集动态创建unittest测试用例和测试套件的结果?
tl;dr:有没有办法用py.test收集动态生成的Python 如何在py.test中收集动态创建unittest测试用例和测试套件的结果?,python,testing,functional-testing,pytest,Python,Testing,Functional Testing,Pytest,tl;dr:有没有办法用py.test收集动态生成的unitest.TestSuite包含的测试,还是我运气不好 我开发了一个名为的工具,它允许使用YAML格式对HTTP API进行声明性测试。它在概念上与OpenStack类似,但专门设计用于OpenStack开发的动态和驱动世界 然而,在我进入那个世界之前,我使用pytest,我仍然更喜欢它。我希望我的工具能和它一起使用。事实证明,这比我希望的要困难得多 在gabbi中,每个YAML文件都是HTTP请求的有序序列。每个请求都是一个TestCa
unitest.TestSuite
包含的测试,还是我运气不好
我开发了一个名为的工具,它允许使用YAML格式对HTTP API进行声明性测试。它在概念上与OpenStack类似,但专门设计用于OpenStack开发的动态和驱动世界
然而,在我进入那个世界之前,我使用pytest,我仍然更喜欢它。我希望我的工具能和它一起使用。事实证明,这比我希望的要困难得多
在gabbi中,每个YAML文件都是HTTP请求的有序序列。每个请求都是一个TestCase,整个测试集保存在TestSuite的一个子类中,该子类有两个用途:
- 按顺序运行测试
- 建立YAML文件中规定的任何所谓“固定装置”
load\u测试
协议构建和加载的
显示我向TiddlyWeb添加gabbi测试的示例。我在那个分支中进行了实验,以使它在py.test中工作。通过向文件中添加类似以下内容,我几乎可以但不完全可以使其正常工作:
(我还需要确保底层TestSuites可以使用\uuuuuhash\uuuuu
函数进行散列。)
这将实际运行测试,但存在以下问题:
- 失败不会被跟踪:py.test表示一切都通过了
- 测试计数是测试套件的计数,而不是测试用例的计数
更新:为了跟进我自己,我最终找到了一种使用发电机的方法。这就是合并后的结果。我从未使用unittest中的
testLoader
,但我收集了非python文件,将它们“翻译”成有效的python,然后成功地将它们传递给py.test,这就是插件:
def test_generate_tests():
from unittest import defaultTestLoader, TestResult
tests = load_tests(defaultTestLoader, None, None)
# when calling a unittest.TestCase we need to provide a
# TestResult to track the results
result = TestResult()
for test in tests:
yield test, result