多线程、分布式运行用例

这篇具有很好参考价值的文章主要介绍了多线程、分布式运行用例。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

python多线程

threading模块

多线程实例

# -*- coding: utf-8 -*-
# @Time    : 2024/2/7 15:50
# @Author  : 居里夫人吃橘子
# @File    : class01.py
# @Software: PyCharm
import threading
from time import sleep


def run(name):
    print(name + '该起床了')
    sleep(2)
    print(name + '该吃饭了')
    sleep(2)
    print(name + '该睡觉了')


th = []

# threading.Thread()创建线程,target代表要运行的方法,args代表方法中需要传参的值
th.append(threading.Thread(target=run, args=['小王']))
th.append(threading.Thread(target=run, args=['小李']))
th.append(threading.Thread(target=run, args=['小张']))

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

输出:

多线程、分布式运行用例,自动化测试,分布式,selenium

多线程跑unittest框架中的用例:基于一个原则先将需要处理的内容保存在list中,基于list的元素来进行线程的添加,在unittest中可以通过discover = unittest.defaultTestLoader.discover(start_dir=path, pattern='test*.py')发现所有的测试套件,然后使用unittest.TextTestRunner().run(suite)运行器或者BeautifulReport的运行器进行用例执行,然后为运行器添加多线程:

# -*- coding: utf-8 -*-
# @Time    : 2024/2/7 16:48
# @Author  : 居里夫人吃橘子
# @File    : suite_test.py
# @Software: PyCharm
import threading
import time
import unittest

from BeautifulReport import BeautifulReport


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


def runner(suite):
    unittest.TextTestRunner().run(suite)


def beautiful_runner(suite):
    # 约定时间戳的格式,注意在Windows中文件的路径不能存在 < > : " / \ | ? *
    strf_time_str = time.strftime("%Y-%m-%d %H-%M-%S")
    file_name = f'测试报告_{strf_time_str}'
    # 测试报告存放路径
    paths = r'D:\PythonTest\Study\selenium_class03'
    result = BeautifulReport(suite)
    result.report(filename=file_name, description='测试报告', log_path=paths)


if __name__ == '__main__':
    suites = get_suite()
    th = []

    for suite in suites:
        print(suite)
        # 使用runner执行多线程
        th.append(threading.Thread(target=runner, args=[suite]))
        # 使用beautiful_runner执行多线程
        # th.append(threading.Thread(target=beautiful_runner, args=[suite]))

    for t in th:
        # 启动多线程
        t.start()
        # 可以防止多线程对一个文件进行同时的读写;
        # t.join()

输出:

多线程、分布式运行用例,自动化测试,分布式,selenium

Selenium Grid 4

专用于做Selenium分布式部署的模块。最初都是基于简单的主从节点的模式来进行分布式部署的。

环境部署:

  • 需要安装jdk环境;
  • 下载Selenium Server (Grid),下载官网:Selenium Server

多线程、分布式运行用例,自动化测试,分布式,selenium

启动模式:

  • 单体模式:standalone

注:单体模式下无法添加任何node子节点;

在jar包的路径命令窗中执行java -jar .\selenium-server-4.17.0.jar standalone

多线程、分布式运行用例,自动化测试,分布式,selenium

访问http://2.0.0.1:4444查看管理页面

多线程、分布式运行用例,自动化测试,分布式,selenium

代码:

'''
    访问selenium grid体系
'''

from time import sleep
from selenium import webdriver

# 配置浏览器
options = webdriver.ChromeOptions()
# 需要传入options浏览器配置参数,不然启动不了,目前还不知道为啥
driver = webdriver.Remote(command_executor='http://2.0.0.1:4444', options=options)
driver.get('http://www.baidu.com')
sleep(5)
# driver.quit()

多线程、分布式运行用例,自动化测试,分布式,selenium

  • 分布式启动:

在主节点下:输入java -jar .\selenium-server-4.17.0.jar hub部署主节点,这只是启动主节点的命令,启动完成后需要再添加node子节点;

多线程、分布式运行用例,自动化测试,分布式,selenium

添加子节点:在子节点电脑中输入java -jar .\selenium-server-4.17.0.jar node --hub http://192.168.2.107:4444

多线程、分布式运行用例,自动化测试,分布式,selenium

注:

  • 子节点中需要有java环境,且需要安装java11或更高版本
  • 需要安装浏览器以及对应的浏览器驱动程序driver
  • 在环境变量中的PATH需要声明driver的路径

总结:文章来源地址https://www.toymoban.com/news/detail-831673.html

  • java -jar .\selenium-server-4.17.0.jar hub #部署主节点
  • java -jar .\selenium-server-4.17.0.jar hub --config ./node_1.toml #部署主节点并以配置文件名为node_1.toml的配置启动
  • java -jar .\selenium-server-4.17.0.jar node --hub http://192.168.2.107:4444 #添加子节点 --hub表示连接的主节点url

到了这里,关于多线程、分布式运行用例的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • [Python系列] 线程、协程、进程和分布式

            我们在写脚本的时候,经常是单线程跑完了全部,毕竟自顶向下按照我们约定的方法运行下去是最规范的。但是很多时候,比如说合法地爬取一些网页信息,图片和资料啊,或者说一些合法的网络请求,读写文件之类的。如果还是单线程地one by one,那么将会影响我们

    2024年02月16日
    浏览(36)
  • C++中实现多线程和分布式

    (2)对于 需要写入但不需要等待响应的请求,可以使用 BlockingQueue 完成,例如 log,由一个专门的线程去写入文件,其他线程只需要往 BlockingQueue 写入即可; (3)线程池大小的阻抗匹配原则 密集计算所占时间的比重为 P,系统一共有 C 个 CPU,线程池大小的经验公式为 T = C

    2024年01月20日
    浏览(46)
  • 基于docker部署的Selenium Grid分布式自动化测试

    Selenium Grid是Selenium套件的一部分,它专门用于并行运行多个测试用例在不同的浏览器、操作系统和机器上。 Selenium Grid有两个版本——老版本Grid 1和新版本Grid 2。我们只对新版本做介绍,因为Selenium团队已经逐渐遗弃老版本了。 Selenium Grid 主要使用 master-slaves (or hub-nodes) 理念

    2024年02月13日
    浏览(33)
  • LouvainMethod分布式运行的升级之路

    1、背景介绍                 Louvain是大规模图谱的谱聚类算法,引入模块度的概念分二阶段进行聚类,直到收敛为止。分布式的代码可以在如下网址进行下载。 GitHub - Sotera/spark-distributed-louvain-modularity: Spark / graphX implementation of the distributed louvain modularity algorithm   该代码

    2024年02月14日
    浏览(35)
  • 使用可视化docker浏览器,轻松实现分布式web自动化

    顺着docker的发展,很多测试的同学也已经在测试工作上使用docker作为环境基础去进行一些自动化测试,这篇文章主要讲述我们在docker中使用浏览器进行自动化测试如果可以实现可视化,同时可以对浏览器进行相关的操作。 首先我们先了解什么是有头浏览器和无头浏览器的区别

    2024年02月14日
    浏览(49)
  • 机器学习分布式框架ray运行xgboost实例

            Ray是一个开源的分布式计算框架,专门用于构建高性能的机器学习和深度学习应用程序。它的目标是简化分布式计算的复杂性,使得用户能够轻松地将任务并行化并在多台机器上运行,以加速训练和推理的速度。Ray的主要特点包括支持分布式任务执行、Actor模型、

    2024年02月15日
    浏览(45)
  • 机器学习分布式框架ray运行TensorFlow实例

    使用Ray来实现TensorFlow的训练是一种并行化和分布式的方法,它可以有效地加速大规模数据集上的深度学习模型的训练过程。Ray是一个高性能、分布式计算框架,可以在集群上进行任务并行化和数据并行化,从而提高训练速度和可扩展性。 以下是实现TensorFlow训练的概括性描述

    2024年02月15日
    浏览(52)
  • Python中的分布式运行:Selenium Grid

    Selenium Grid 是 Selenium 测试框架的一个关键组件,它为测试人员提供了在多个计算机和浏览器上并行执行测试的能力。通过 Selenium Grid,我们能够更高效地进行大规模测试,并确保应用程序在不同环境中的稳定性和一致性。 我们将从以下几点深入解析Selenium Grid分布式运行的逻辑

    2024年04月12日
    浏览(34)
  • 读发布!设计与部署稳定的分布式系统(第2版)笔记10_自动化和缓慢的响应

    3.3.1.1. 被隔离的节点无法正确地感知当前状态 3.3.1.2. 控制系统会感知环境,但它们有可能被愚弄 3.3.2.1. 快速启动机器 3.3.2.2. 要慢慢关机 3.3.2.3. 启动新机器要比关闭旧机器更安全 3.3.5.1. 控制层虽然每秒都能感知到系统已经过载,但它启动一台虚拟机处理负载需要花费5分

    2024年02月10日
    浏览(37)
  • 深度解析Redisson框架的分布式锁运行原理与高级知识点

    分布式系统中的锁管理一直是一个复杂而关键的问 题。在这个领域,Redisson框架凭借其出色的性能和功能成为了开发者的首选之一。本篇博客将深入探讨Redisson框架的分布式锁运行原理以及涉及的高级知识点。通过详细的解释和示例代码,您将更好地理解如何在分布式环境中

    2024年02月09日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包