Python多线程应用于自动化测试操作示例

本文实例讲述了Python多线程应用于自动化测试操作。分享给大家供大家参考,具体如下:

多线程执行测试用例

实例:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

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

1

2

3

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

1

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

测试脚本:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

'''

在不同主机、不同浏览器同时执行测试用例,多线程;

利用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()

运行结果:

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走! 希望能帮助到你!【100%无套路免费领取】

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值