Odd*_*ing 46 python unit-testing
Python的NOSE测试框架具有并行运行多个测试的概念.
这样做的目的不是测试代码中的并发性,而是为没有副作用,没有排序问题,没有外部依赖性的代码进行测试,运行得更快.性能增益来自于访问不同设备时的并发I/O等待,更好地使用多CPU /内核以及并行运行time.sleep()语句.
我相信使用Python的单元测试框架可以通过插件Test Runner完成同样的事情.
有没有人有这种野兽的经验,他们可以提出任何建议吗?
die*_*dha 23
Python unittest的内置testrunner不会并行运行测试.写一个这样做可能不会太难.我自己写的只是为了重新格式化每个测试的输出和时间.那可能每天花费1/2.我认为你可以换掉与使用多进程的派生程序一起使用的TestSuite类,而不会有太多麻烦.
Joe*_*Joe 19
所述testtools包是支持同时运行的测试单元测试的延伸.它可以与继承的旧测试类一起使用unittest.TestCase.
例如:
import unittest
import testtools
class MyTester(unittest.TestCase):
# Tests...
suite = unittest.TestLoader().loadTestsFromTestCase(MyTester)
concurrent_suite = testtools.ConcurrentStreamTestSuite(lambda: ((case, None) for case in suite))
concurrent_suite.run(testtools.StreamResult())
Run Code Online (Sandbox Code Playgroud)
小智 6
如果你想并行运行,请使用pytest-xdist.
pytest-xdist插件使用一些独特的测试执行模式扩展了py.test:
- 测试运行并行化:如果您有多个CPU或主机,则可以将它们用于组合测试运行.这允许加速开发或使用远程机器的特殊资源.
[...]
更多信息:Rohan Dunham的博客
小智 5
如果您没有那么多测试用例并且它们不相互依赖,另一个可能更简单的选择是在单独的过程中手动启动每个测试用例。
例如,打开几个 tmux 会话,然后使用以下内容在每个会话中启动一个测试用例:
python -m unittest -v MyTestModule.MyTestClass.test_n
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
25637 次 |
| 最近记录: |