多线程实现多用例文件并发读取执行+Selenium Grid4实现测试框架分布式部署

38 篇文章 6 订阅
23 篇文章 0 订阅


1.main.py

import os
import threading

from class25.excel_driver.excel_read import path, read
from class26 import log_conf

if __name__ == '__main__':
    # 创建log对象
    log = log_conf.get_log('./conf/log.ini')
    # 通过读取data路径下是否有测试用例,有,就执行,没有就不执行
    # 重跑集合
    repeat = list()
    # 测试用例集合
    cases = list()
    # 线程池创建
    th = list()

    # 读取路径下的测试用例
    for path,dir,files in os.walk('../class25/data/'):
        for file in files:
            # 获取文件的后缀名
            file_type = os.path.splitext(file)[1]
            # file_name = os.path.split(file)[1]
            file_name = os.path.splitext(file)[0]
            # print(file_type)
            # print(path+file)
            if file_type == '.xlsx':
                # print(file_type)
                if 'old' not in file_name:
                    case_path = path+file
                    cases.append(case_path)
            else:
                log.error('文件类型错误:{}'.format(file))
    # for case in cases:
    #     log.info('********正在执行{}文件*********'.format(case))
    #     f = read(case,log)
    #     if f:
    #         repeat.append(f)

    # if len(repeat)>0:
    #     #调用重跑,运行repeat下的所有用例
    #     pass

    # 基于用例的数量设置与之对应的线程数量
    for case in cases:
        th.append(threading.Thread(target = read,args = [case,log]))

    # 启动线程
    for t in th:
        t.start()

2.封装获取用例的套件函数

'''
    封装获取用例的套件函数
'''
import threading
import unittest


def get_suite():
    path = './'
    discover = unittest.defaultTestLoader.discover(start_dir=path, pattern='test*.py')
    return discover


# 运行器运行套件函数
def runner(suite):
    unittest.TextTestRunner().run(suite)

if __name__ == '__main__':
    suites = get_suite()
    th = []
    for suite in suites:
        th.append(threading.Thread(target=runner,args = [suite]))
    for t in th:
        t.start()

3.多线程的用例并发处理实现

'''
    多线程的用例并发处理实现
        多线程的操作
'''
import threading
from time import sleep


def run(name):
    print(name+ '在跑步')
    sleep(3)
    print(name+'跑累了')

1.单线程效果

li = ['狐狸','网恋','寒灯']
# for i in li:
#     run(i)

2.建立线程池

# 一起跑步:通过多线程的形态实现多用户一起跑步的效果
th = list()

3.分配线程

th.append(threading.Thread(target = run,args=['狐狸']))
th.append(threading.Thread(target = run,args=['网恋']))
th.append(threading.Thread(target = run,args=['寒灯']))

4.启动线程

# 如果你的多条线程是针对同一个文件来进行读写操作的话,为防止出现线程锁,需要添加join
for t in th:
    t.start()
    # 为了避免多线程对同一文件或内容进行操作,造成的锁
    t.join()

4.访问Selenium Grid体系

'''
    访问Selenium Grid体系
'''
from time import sleep

from selenium import webdriver
# 创建remote对象

driver = webdriver.remote('http://127.0.0.1:4444/wd/hub')
# a业务,b业务,c业务,用不同的driver对象执行不同的业务不就可以了
driver.get('http://www.baidu.com')
sleep(5)
driver.quit()
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

司小幽

真诚赞赏,手留余香。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值