多线程应用于自动化测试

多线程执行测试用例

实例:

import threading
from time import sleep,ctime
from selenium import webdriver
#测试用例1
def test_baidu(browser,search):
    print("开始,现在时间是%s"%ctime())
    print("浏览器是%s"%browser)
    if browser =="ff":
        driver = webdriver.Firefox()
    elif browser =="chrome":
        driver = webdriver.Chrome()
    elif browser =="ie":
        driver =webdriver.Ie()
    else:
        print("浏览器输入错误!")

    driver.get(r"http://www.baidu.com")
    driver.implicitly_wait(5)
    driver.find_element_by_xpath("//*[@id='kw']").send_keys(search)
    driver.find_element_by_id("su").click()
    sleep(2)
    driver.quit()
if __name__ =="__main__":
    #定义字典存放test_baidu函数的参数
    dicts = {"ff": "python", "chrome": "selenium", "ie": "unittest"}
    #创建空列表存放线程
    threads =[]
    #遍历字典,并把线程append进threads
    for browser,search in dicts.items():
        t = threading.Thread(target=test_baidu,args=(browser,search))
        threads.append(t)
    #把字典内容索引替代
    file = range(len(dicts))
    #启动线程
    for i in file:
        threads[i].start()
    #守护线程
    for i in file:
        threads[i].join()
测试结果:


由测试结果得到:多线程同时开始执行测试用例,大大缩小测试总时间。

多线程结合分布式执行测试用例

Selenium Girl 只是提供了多操作系统、多浏览器的执行环境,但不提供并行执行测试用例,Selenium Girl只能现在一个系统或浏览器上执行完测试用例外再从另一个操作系统或浏览器上执行测试用例。

启动Selenium server

在本机启动一个主hub和一个node节点:本机IP地址(192.168.0.101),节点端口4444/5555

java -jar selenium-server-standalone-2.48.0.jar -role hub

java -jar selenium-server-standalone-2.48.0.jar -role node -port 5555

启动一个远程node:p(192.168.0.102)在虚拟机里面:端口是6666

java -jar selenium-server-standalone-2.48.0.jar -role node -port 6666 -hub http://192.168.0.101:4444/gird/register

测试脚本:

'''
在不同主机、不同浏览器同时执行测试用例,多线程;
利用Selenium Girl提供分布式执行测试用例;
先启动Selenium server,这里分别在本地主机启动一个hub和一个node,在其他主机(虚拟机)启动一个node。
'''
from selenium.webdriver import Remote
import threading
from time import *

#测试用例
def test_baidu(host,browser):
    print("开始:%s"%ctime())
    print(host,browser)
    dc ={'browserName':browser}
    driver = Remote(
                    command_executor=host,
                    desired_capabilities=dc
    )
    driver.get(r'http://www.baidu.com')
    driver.implicitly_wait(10)
    driver.find_element_by_link_text("新闻").click()
    sleep(2)
    driver.get_screenshot_as_file(r'D:\testscreen\baidu.jpg')
    driver.quit()

if __name__ =='__main__':
    #启动参数,指定运行主机和浏览器
    lists={'http://127.0.0.1:4444/wd/hub':'chrome',
           'http://127.0.0.1:5555/wd/hub':'internet explorer',
           'http://192.168.216.128:6666/wd/hub':'firefox'  #远程节点node
           }
    threads =[]
    files = range(len(lists))
    #创建线程,并append进线程组
    for host,browser in lists.items():
        t = threading.Thread(target=test_baidu,args=(host,browser))
        threads.append(t)
    #启动每一个线程
    for i in files:
        threads[i].start()
    #守护每一个线程
    for i in files:
        threads[i].join()
运行结果:




  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Python有许多自动化测试框架可供使用,如: 1. unittest: Python自带的测试框架,简单易用,但功能较弱。 2. pytest: 功能强大,支持自动化测试、数据驱动测试、mock测试等,是目前Python测试界的主流框架之一。 3. nose: 功能类似pytest,是另一种流行的Python测试框架。 4. robot framework: 支持自动化测试、数据驱动测试、可扩展性强,适合做测试用例较多的项目。 这些框架都可以用来进行自动化测试,根据具体需要选择适合自己的框架使用即可。 ### 回答2: Python自动化测试框架是一个用于帮助开发人员自动执行测试的工具集合。它提供了丰富的功能和库,使得测试人员能够自动化执行测试用例、生成测试报告、管理测试环境等。 Python自动化测试框架的主要特点如下: 1. 强大的测试库:Python自动化测试框架提供了丰富的测试库,如unittest、pytest等,它们提供了各种功能,如断言、测试用例管理、测试数据驱动等,使得编写和执行测试用例变得简单和高效。 2. 可扩展性:Python自动化测试框架可以方便地与其他工具集成,如Selenium、Appium、Requests等,这些工具可以用于自动化测试Web用、移动用、API等。同时,Python还支持各种第三方库的安装和使用,使得开发人员可以根据项目的需求自由选择和使用合适的工具和库。 3. 自动生成测试报告:Python自动化测试框架可以生成详细的测试报告,报告中包含测试用例的执行结果、错误信息、覆盖率等重要信息。这些报告可以帮助测试人员了解测试的覆盖率和质量,以便及时发现问题并进行修复。 4. 并行执行测试用例:Python自动化测试框架支持多线程或协程的并行执行测试用例,可以大大提高测试效率,尤其是在大规模测试时。 5. 易于集成和持续集成:Python自动化测试框架可以很容易地与CI/CD工具集成,如Jenkins、GitLab CI等,使得测试人员可以实现自动化地执行测试用例、生成测试报告、发布测试结果等。 综上所述,Python自动化测试框架具有丰富的功能和易用性,是开发人员进行自动化测试的理想选择。它提供了丰富的测试库和工具集成能力,能够满足不同项目和测试需求,并能够提高测试效率和质量。 ### 回答3: Python自动化测试框架是用Python编写的一套工具和库,用于自动化执行软件测试任务。它提供了丰富的功能和工具,方便开发人员和测试人员进行自动化测试。 首先,Python自动化测试框架提供了丰富的测试工具和库,例如Selenium WebDriver和Pytest等。Selenium WebDriver是Web用程序的自动化测试工具,它可以模拟用户在浏览器中的操作,比如点击、输入文本等。Pytest是一个功能强大且易于使用的测试框架,可以轻松编写和运行各种类型的测试用例。 其次,Python自动化测试框架具有灵活和可扩展的特点。开发人员可以轻松地编写自定义的测试脚本和插件,以满足特定的测试需求。此外,Python还具有丰富的第三方库和模块,可以与测试框架无缝集成,提供更多的功能和选项。 此外,Python自动化测试框架还支持多种测试类型,包括单元测试、集成测试和系统测试等。开发人员可以根据具体的需求选择适合的测试类型,并使用相的工具和库进行自动化测试。 最后,Python自动化测试框架具有广泛的用场景。它可以用于各种软件项目,包括Web用程序、移动用程序和数据分析等。无论是开发人员还是测试人员,都可以利用Python自动化测试框架来提高测试效率和质量,减少测试工作的重复性和繁琐性。 综上所述,Python自动化测试框架是一种功能强大、灵活可扩展的工具,适用于各种软件测试任务。它可以帮助开发人员和测试人员快速编写和执行测试用例,提高测试效率和质量。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值