美文网首页测试开发实践
Python - 用协程并发执行测试用例

Python - 用协程并发执行测试用例

作者: 严北 | 来源:发表于2018-02-07 17:52 被阅读77次

背景

最近在工作中,遇到需要执行大量测试用例的情况。大概2500个测试用例,每个用例有数条HTTP请求以及一些特殊处理,使用unittest线性执行下来的结果是我花了2个半小时才执行完成!

为了解决这个问题,提高工作效率,实现测试用例并发执行是我所需要的。

几个想法

  1. 多线程执行测试用例

  2. 协程

可能遇到的问题:

多线程

值得说明的是,多线程执行测试用例是有前辈实现过的。具体实现过程没有看过,依稀记得他的实现过程会生成多份测试报告,然后用BeautifulSoup去解析、合并测试报告。

协程

  1. 使用协程,可能需要修改PyUnit源码
  2. 使用协程,可能需要修改当前测试用例为协程方法,改动可能很大

实现过程

由于正在学习Python协程,我还是决定先用协程试试能否实现。当然,最终结果证明改动不大,仅修改了源码的一小小部分,测试用例部分则只修改了单元测试模块名

首先是获取python3的源码。

git clone -b 3.5 https://github.com/python/cpython.git

unittest源码在Lib/unittest中。

给已有的测试用例打断点,调试几波,理清unittest模块对测试用例的调用执行顺序。

猜测主要过程为:

原实现流程

找到TestCase真正执行入口:

unittest/case.py 中的 TestCase 类中的 run 方法的 testMethod()。(Line 605)

测试用例执行入口

上层调用在TestSuite类中,修改上层入口,把对TestCase的顺序执行改为调用协程并发执行:

提取循环部分代码,改写为协程

最终结果

修改后,执行流程如下:

现在实现流程

经过上述修改,原来2600多个测试用例需要的执行时间,从两个半小时压缩到8分半钟(如图),提高效率不赘述。

测试报告

存在的问题

不支持 HTMLTestRunner, 执行测试用例请用 TestTestRunner

Github

https://github.com/ityoung/python3-fastunit

参考

https://stackoverflow.com/questions/30172821/python-asyncio-task-got-bad-yield

相关文章

  • 高效测试库:python3-fastunit

    python3-fastunit是使用协程并发执行测试用例的测试库,能够极大提高测试执行效率!更多关于python...

  • Python - 用协程并发执行测试用例

    背景 最近在工作中,遇到需要执行大量测试用例的情况。大概2500个测试用例,每个用例有数条HTTP请求以及一些特殊...

  • 13.2 并发执行

    当我们有成千上万个自动化测试用例时,为了提高测试用例的执行速度,往往我们需要对测试用例进行并发执行。并发执行的方式...

  • Golang学习笔记--协程和通道随笔

    并发:逻辑上具备同时处理多个任务的能力 并行:物理上在同一时刻执行多个并发任务 单线程的用协程做并发:协程在单个线...

  • Python协程

    Python协程 生产环境中经常有并发执行任务的需求,由于GIL的存在,Python的线程并不是真正意义上并行执行...

  • 36.Python并发编程之协程

    Python并发编程之协程 协程协程是程序级别的概念,操作系统根本就没有协程的概念!!!协程的本质就是一条线程,可...

  • Python-02进阶-04多进程多线程

    Python 进阶-04 进程线程协程并发等.md tags: Python 多进程 并发 进阶 必备知识 201...

  • 深入理解kotlin协程-挂起篇

    前言 协程是一种并发设计模式(接下来我所说的协程均指kotlin协程),利用协程我们可以简化异步执行的代码,但在使...

  • Python实现协程实例

    1. 目标:在线程下实现并发并发(多个任务看起来是同时执行就是并发):切换+保存状态 2. 协程:协程是单线程实现...

  • 软件测试常见问题

    1、软件测试流程是什么? ①需求分析,需求评审②编写测试计划③编写测试用例,用例评审④执行测试,提交bug,回归测...

网友评论

    本文标题:Python - 用协程并发执行测试用例

    本文链接:https://www.haomeiwen.com/subject/mfeazxtx.html