背景
做了一个GUI工具,其中一个功能是把pytest用例展示在上面,并且可以执行,当中遇到了很多问题,其中一个就是如何收集pytest用例信息
思路
大家都知道pytest 收集用例规则未:搜索所有以test_开头的测试文件,以Test开头的测试类,以test_开头的测试函数。pytest --collect-only会展示给定配置下哪些测试用例会被运行,展示如下:
那我获得这些后,就可以从中提取信息,组合成用例了。
思路挖掘
- subprocess.Popen可以用subprocess这个模块来产生子进程,并连接到子进程的标准输入/输出/错误中去
- 怎么产生这个可以pytest的进程,可以使用pytest.main()方法传入–collect-only 和 工作目录
- 后面执行pytest的用例就需要打包pytest编写的程序了
- 输出的信息过滤Module,Class,Function,再组合起来就可以得到了
问题
- pytest参数化用例这样用有没有影响
- 中文windows命令行默认编码格式是GBK,显示多国语言怎么编码解码
- 用例执行时日志怎么同步输出出来
- pytest自带的日志中有很多颜色的代码,怎么过滤
- 收集的数据里面可能有多种编码格式,怎么解码
后面的文章会详细解释怎么解决这些问题