pytest插件并发运行测试,每个“yield”将上下文切换到另一个
pytest-yield的Python项目详细描述
tests | |
---|---|
package |
什么?
pytest_yield是一个允许将测试作为协同程序运行的插件。这个 意味着一些测试可以同时执行。
为什么?
这是工程师们提出的第一个问题。一般理论说我们 每个测试都必须单独运行,这意味着 对其他测试没有任何影响。这个插件在 全部。
为什么我们需要它?
假设我们有集成测试,每个测试执行需要 长时间。例如,测试应该等待一些反应取决于 初步行动。这种等待可能需要1个小时。甚至 之后,我们需要执行场景中的下一个操作并等待更多。 所有测试的同步执行,一个接一个,将需要大量的 时间。但是如果所有的测试用例都是独立的,那么test1 不影响test2的结果。也不知道怎么跳 等待进程test1并将执行上下文切换到test2。这个 实际上,pytest_产生的结果是在做什么。
怎么做?
假设每个并发测试都是一个生成器。切换 执行上下文在每个yield之后执行。测试添加到 如果生成器还没有被检验,则deeue的结束。新的之后 从出列的左侧拉出。假设测试有N个结果,那么 将重新安排N次。
不要与
一起使用相互依赖的测试。大多数 特别的例子是带有mock的unittests,如果test1模拟某个方法, 这也将在test2中隐式模拟。