美文网首页
【python+selenium】并发执行测试用例

【python+selenium】并发执行测试用例

作者: 柠月如风000 | 来源:发表于2019-01-04 18:01 被阅读0次

    前提:

    1.全部的测试用例脚本均放在web_testcase文件夹下

    2.生成测试报告的文件HTMLTestRunner_cn.py(转自GitHub - GoverSky/HTMLTestRunner_cn: HTMLTestRunner 汉化版,同时支持python 2和3,增加截图展示功能,失败重试

    具体代码如下:


    # coding=utf-8

    import unittest,os,time

    import HTMLTestRunner_cn

    import threading

    import send_email

    import sys

    sys.path.append('..')

    casepath = os.path.dirname(os.path.abspath('.'))+"/web_testcase"

    if not os.path.exists(casepath):

        print("测试用例需放到‘case’文件目录下")

        os.mkdir(casepath)

    reportpath = os.path.dirname(os.path.abspath('.'))+"/result/report"

    if not os.path.exists(reportpath): os.mkdir(reportpath)

    # 确定测试用例以及测试报告所在文件夹

    def allcase():

        discover = unittest.defaultTestLoader.discover(casepath,

                                                        pattern = "test*.py",

                                                        top_level_dir= None)

        return discover

    # 获取全部测试用例文件

    def runcase(suite):

        current_time = time.strftime("%Y-%m-%d-%H-%M")

        report_name =  current_time + "_Test_Result.html"

        htmlreportpath = os.path.join(reportpath,report_name)

        fp = open(htmlreportpath,"wb")

        proclist=[]

        s=0

        for i in suite:

            runner = HTMLTestRunner_cn.HTMLTestRunner(title="测试报告"+ str(s+1),

                                                    description = '并发执行测试用例:' ,

                                                    stream = fp,

                                                    verbosity=2,

                                                    retry=1,

                                                    save_last_try=True)

            proc = threading.Thread(target=runner.run,args=(i,))

            proclist.append(proc)

            s=s+1

        for proc in proclist:

            proc.start()

        for proc in proclist:

            proc.join()

        fp.close()

        send_email.send_email(htmlreportpath)

    if __name__ == "__main__":

        runtmp = allcase()

        runcase(runtmp)


    上述代码,虽然能减少测试用例运行时间且成功的执行并生成测试报告,但是仍有不足之处:

    1.生成的测试报告页面,每个测试用例文件均分开显示(如果可以将全部测试)

    2.命令行仅打印出了某个测试用例文件中测试用例的执行结果,其他的均没有在cmd窗口显示测试结果(未知原因)

    相关文章

      网友评论

          本文标题:【python+selenium】并发执行测试用例

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