Robot Framework测试用例并行执行

作者: wywincl | 来源:发表于2016-08-03 16:21 被阅读2987次

    背景

    在实际的测试业务中,我们往往会遇到测试用例执行时间比较长,大量的测试用例串行执行的话,会使的整个测试周期变长,导致不能及时的反馈自动化测试的结果。因此我们会想出几种解决方案,来并行的执行测试用例,加快自动化测试时间。做到能够及时的反馈测试结果。

    设计方案

    方案一:

    测试用例分布式执行,通过策略,将不同的测试用例,分发到不同的测试机上进行执行,然后收集测试结果,合并测试报告。

    这里我们以web测试为例:

    test-arch-robot.png

    通过Hub节点中心,将不同的测试请求分发到合适的测试节点中去,实现测试的分布式执行。

    方案二:

    在同一台测试机上,启动不同的进程,来分别执行不同的测试用例,根据测试机的CPU核数确定启动的进程数,实现真正的并行执行。

    这里我们主要用到了开源工具pabot来实现robot测试用例的并行执行。

    robot_pabot.jpg

    样例

    执行下面这个简单的用例,了解并行执行过程。

    pip install -U robotframework-pabot==0.35
    git clone https://github.com/wywincl/example-for-pabot.git
    cd example-for-robot && pabot --processes 5 topsuite
    

    输出

    ubuntu2@ubuntu2-PowerEdge-R410:~/tmp/example-for-pabot$ pabot --processes 5 topsuite
    2017-01-05 15:48:13.683078 [PID:30072] [3] EXECUTING Topsuite.Testsuite2-测试2
    2017-01-05 15:48:13.690442 [PID:30075] [4] EXECUTING Topsuite.Testsuite3
    2017-01-05 15:48:13.689776 [PID:30073] [1] EXECUTING Topsuite.2Suite.Testsuite5-测试5
    2017-01-05 15:48:13.696798 [PID:30079] [0] EXECUTING Topsuite.2Suite.Testsuite4
    2017-01-05 15:48:13.978538 [PID:30077] [2] EXECUTING Topsuite.Testsuite1
    2017-01-05 15:48:14.079019 [PID:30077] [2] PASSED Topsuite.Testsuite1 in 0.1 seconds
    2017-01-05 15:48:14.089794 [PID:30072] [3] PASSED Topsuite.Testsuite2-测试2 in 0.4 seconds
    2017-01-05 15:48:14.091765 [PID:30075] [4] PASSED Topsuite.Testsuite3 in 0.4 seconds
    2017-01-05 15:48:14.094498 [PID:30073] [1] PASSED Topsuite.2Suite.Testsuite5-测试5 in 0.4 seconds
    2017-01-05 15:48:14.098067 [PID:30079] [0] PASSED Topsuite.2Suite.Testsuite4 in 0.4 seconds
    Output:  /home/ubuntu2/tmp/example-for-pabot/output.xml
    Log:     /home/ubuntu2/tmp/example-for-pabot/log.html
    Report:  /home/ubuntu2/tmp/example-for-pabot/report.html
    Elapsed time: 0 minutes 0.664 seconds
    
    

    小结

    结合Jenkins+docker技术,我们可以很方便的基于上面的两套方案,打造分布式并行自动化测试集群。

    备注

    Does not Support Other Unicode Character Like Chinese Character. 中文支持问题已经解决了。

    相关文章

      网友评论

      • jhcathy:在不同的slave上并行执行相同的用例已经解决,现在的问题是在不同的slave上执行不同的用例。创建不同的job是一种方法,我想实现的是用例随机分配到不同的环境上执行,即在用例上标记环境信息,用例会随机分配到同个拓扑的某个环境上执行。不知道我描述清楚没有,谢谢!
      • cd967dced137:你好,我用pabot总是出现assertionError用到的命令为:pabot E:\Python27\Scripts\test\测试用例层
        pabot --processes 10 --outputdir results E:\Python27\Scripts\test\测试用例层\,另外可以加你的qq吗,谢谢
        wywincl:当前的pabot对中文路径,以及中文命名的测试套件名称不支持,建议用英文,后面我会放出一个中文支持版本出来。
        cd967dced137:@wywincl Elapsed time: 0 minutes 1.777 seconds
        Traceback (most recent call last):
        File "D:\Python27\lib\runpy.py", line 162, in _run_module_as_main
        "__main__", fname, loader, pkg_name)
        File "D:\Python27\lib\runpy.py", line 72, in _run_code
        exec code in run_globals
        File "D:\Python27\lib\site-packages\pabot\pabot.py", line 591, in <module>
        main(sys.argv[1:])
        File "D:\Python27\lib\site-packages\pabot\pabot.py", line 578, in main
        _get_suite_root_name(suite_names)))
        File "D:\Python27\lib\site-packages\pabot\pabot.py", line 473, in _report_resu
        lts
        return _report_results_for_one_run(outs_dir, options, start_time_string, tes
        ts_root_name)
        File "D:\Python27\lib\site-packages\pabot\pabot.py", line 477, in _report_resu
        lts_for_one_run
        output_path = _merge_one_run(outs_dir, options, tests_root_name)
        File "D:\Python27\lib\site-packages\pabot\pabot.py", line 490, in _merge_one_r
        un
        options, tests_root_name).save(output_path)
        File "D:\Python27\lib\site-packages\pabot\result_merger.py", line 128, in merg
        e
        assert len(result_files) > 0
        AssertionError


        谢谢,方便的话可以加我下QQ:344134880吗,因为加你们群没有被通过。
        wywincl:@cd967dced137 把出错的详细日志贴出来看一下。

      本文标题:Robot Framework测试用例并行执行

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