51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 4558|回复: 5
打印 上一主题 下一主题

selenium+python 的测试套件和分布式集成问题,请指教

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2015-2-3 10:46:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 meibaocai 于 2015-2-3 11:04 编辑

以下是测试套件code:# -*- coding: utf-8 -*-import unittest
import HTMLTestRunner
import time
import sys
from selenium import webdriver
sys.path.append("\test_case")
from test_case.public import sendreport
from test_case.public import config
from test_case import  Test_Collect3
reload(sys)
sys.setdefaultencoding('utf-8')
listaa='E:\\selenium_test\\test_case'
def creatsuitel():
    print 1111
    testunit=unittest.TestSuite()
    print 222
    #discover 方法筛选出来的用例,循环添加到测试套件中
    discover=unittest.defaultTestLoader.discover(listaa,pattern ='*Collect3.py',top_level_dir=None)
    print 333
    for test_suite in discover:
        print 4444
        for test_case in test_suite:
            print 555
            testunit.addTests(test_case)
            print testunit
    return testunit
#添加测试套件,即:测试集
now = time.strftime('%Y-%m-%d-%H_%M_%S',time.localtime(time.time()))
filename = 'E:\\selenium_test\\report\\'+now+'result.html'
#filename = 'E:\\selenium_test\\report\\test.html'
fp = file(filename, 'wb')
runner =HTMLTestRunner.HTMLTestRunner(stream=fp,title=u'测试报告'+now,description=u'用例执行情况:')
for host,browser in config.getconfig().items():
    try:
        print host
        print browser
        alltestnames = creatsuitel()
        driver = webdriver.Remote(
        command_executor=host,
        desired_capabilities={'platform': 'ANY','browserName':browser,'version': '','javascriptEnabled': True
        })
        runner.run(alltestnames)
        print 7777
    except Exception,e:
        print Exception,":",e
        continue

以下是case:
# -*- coding: utf-8 -*-
from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
import unittest, time, re
from threading import Thread
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import Select
from selenium.common.exceptions import NoSuchElementException
from selenium.common.exceptions import NoAlertPresentException
from selenium.webdriver.support.ui import WebDriverWait # available since 2.4.0
from selenium.webdriver.support import expected_conditions as EC # available since 2.26.0
import unittest, time, re,random
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
sys.path.append("\public")
from public import config
from public import login
from public import logout

#登陆模块(函数)
class Test_Collect(unittest.TestCase):
    def setUp(self):
        print 111

    def test_Collect(self):
        #通过host,browser 来参数化脚本
        #driver=self.driver
        self.maximize_window()
        self.delete_all_cookies()
        u"""商品详情中收藏商品、收藏夹中删除收藏商品 'browser'"""
        self.get("http://www.xxxx.com")
        self.implicitly_wait(5)
        while config.isElementExsit(driver,"a[class=\"close\"]") :
            self.find_element_by_css_selector("a[class=\"close\"]").click()
        login.login(self=driver)
        self.implicitly_wait(2)
        self.find_element_by_link_text(u"BOYS男装").click()
        time.sleep(2)
        self.find_element_by_xpath(u"(//a[contains(text(),'卫衣')])[2]").click()
        time.sleep(10)
        self.switch_to_window(self.window_handles[-1])
        self.maximize_window()
        time.sleep(5)
        #下拉滚动条的js
        js="var q=document.documentElement.scrollTop=5000"
        driver.execute_script(js)
        #获取商品数,将其加入到goods数组中,然后随机取其中一个商品
        #driver.find_element_by_xpath("/html/body/div[2]/div[2]/div[2]/div[4]/div/div['t']/div[1]/a").click()
        lt=len(self.find_elements_by_css_selector(".name>a"))
        rd=random.randint(1, lt)
        print rd
        time.sleep(5)
        self.find_elements_by_css_selector(".name>a")[rd].click()
        time.sleep(2)
        self.switch_to_window(self.window_handles[-1])
        time.sleep(5)
        self.find_element_by_css_selector("a[class=\"left button-favor\"]").click()
        time.sleep(5)
        self.find_element_by_link_text(u"我的收藏").click()
        time.sleep(5)
        inputs=self.find_elements_by_tag_name('input')
        n=0
        for ii in inputs:
            if ii.get_attribute('type')=="checkbox":
                n=n+1
        n=n-3
        print u"当前列表文件为%d" %n
        if n > 0:
            print "收藏商品成功!"
        elif n==0:
            raise NameError('收藏商品失败!')
            #勾选全选输入框,点击“删除”选项
        self.find_element_by_id("checkpro").click()
        self.find_element_by_id("removebut").click()
        alert = self.switch_to_alert()
        alert.accept()
        #判断商品收藏商品是否成功
        inputs=self.find_elements_by_tag_name('input')
        n=0
        for ii in inputs:
            if ii.get_attribute('type')=="checkbox":
                n=n+1
        n=n-3
        print u"当前列表文件为%d" %n
        if n == 0:
        #空列表,收藏商品列表页有3个复选框
            print "删除收藏商品成功!"
        elif n>0:
            raise NameError('收藏商品失败!')
        time.sleep(5)
        logout.logout(self=self)
        time.sleep(2)
        self.quit()
def tearDown(self):
        self.driver.quit()
        self.assertEqual([], self.verificationErrors)
以下是config.py
# -*- coding: utf-8 -*-
from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
import unittest, time, re
from threading import Thread
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import Select
from selenium.common.exceptions import NoSuchElementException
from selenium.common.exceptions import NoAlertPresentException
from selenium.webdriver.support.ui import WebDriverWait # available since 2.4.0
from selenium.webdriver.support import expected_conditions as EC # available since 2.26.0
import unittest, time, re
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
def getconfig():
    hublist={'http://172.16.13.136:5555/wd/hub':'firefox','http://172.16.13.136:6666/wd/hub':'chrome'}
    #hublist={'http://127.0.0.1:5555/wd/hub':'firefox',}
    #hublist={'http://127.0.0.1:5555/wd/hub':'internet explorer','http://127.0.0.1:6666/wd/hub':'firefox','http://172.16.13.49:5556/wd/hub':'chrome'}
    #hublist={'http://127.0.0.1:5555/wd/hub':'internet explorer'}
    return hublist

def isElementExsit(driver,locator):
    try:
        driver.find_element_by_css_selector(locator)
        flag=True
    except Exception,e:
        print Exception,":",e
        flag=False
    return flag

以下是:login.py
# -*- coding: utf-8 -*-
from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
import unittest, time, re
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
#登陆模块(函数)
def login(self):
    self.find_element_by_link_text("请登录").click()
    time.sleep(2)
    self.find_element_by_id("loginemail").clear()
    self.find_element_by_id("loginemail").send_keys("111")
    self.find_element_by_id("loginpassword").clear()
    self.find_element_by_id("loginpassword").send_keys("1111")
    self.find_element_by_class_name("btn_b_login").click()
    time.sleep(5)



以下是执行结果:
C:\Python27\python.exe E:/selenium_test/all_yoho_case3.py
http://172.16.13.136:5555/wd/hub
firefox
1111
222
333
4444
555
<unittest.suite.TestSuite tests=[<Test_Collect3.Test_Collect testMethod=test_Collect>]>
E
Time Elapsed: 0:00:02.689000
7777
http://172.16.13.136:6666/wd/hub
chrome
1111
222
333
4444
555
<unittest.suite.TestSuite tests=[<Test_Collect3.Test_Collect testMethod=test_Collect>]>
E
Time Elapsed: 0:00:03.736000
7777

Process finished with exit code 0







分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
 楼主| 发表于 2015-2-3 10:48:12 | 只看该作者
以下是:具体用例
# -*- coding: utf-8 -*-
from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
import unittest, time, re
from threading import Thread
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import Select
from selenium.common.exceptions import NoSuchElementException
from selenium.common.exceptions import NoAlertPresentException
from selenium.webdriver.support.ui import WebDriverWait # available since 2.4.0
from selenium.webdriver.support import expected_conditions as EC # available since 2.26.0
import unittest, time, re,random
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
sys.path.append("\public")
from public import config
from public import login
from public import logout

#登陆模块(函数)
class Test_Collect(unittest.TestCase):
    def setUp(self):
        print 111

    def test_Collect(self):
        #通过host,browser 来参数化脚本
        #driver=self.driver
        self.maximize_window()
        self.delete_all_cookies()
        u"""商品详情中收藏商品、收藏夹中删除收藏商品 'browser'"""
        self.get("http://xxxxx.com")
        self.implicitly_wait(5)
        while config.isElementExsit(driver,"a[class=\"close\"]") :
            self.find_element_by_css_selector("a[class=\"close\"]").click()
        login.login(self=driver)
        self.implicitly_wait(2)
        self.find_element_by_link_text(u"BOYS男装").click()
        time.sleep(2)
        self.find_element_by_xpath(u"(//a[contains(text(),'卫衣')])[2]").click()
        time.sleep(10)
        self.switch_to_window(self.window_handles[-1])
        self.maximize_window()
        time.sleep(5)
        #下拉滚动条的js
        js="var q=document.documentElement.scrollTop=5000"
        driver.execute_script(js)
        #获取商品数,将其加入到goods数组中,然后随机取其中一个商品
        lt=len(self.find_elements_by_css_selector(".name>a"))
        rd=random.randint(1, lt)
        print rd
        time.sleep(5)
        self.find_elements_by_css_selector(".name>a")[rd].click()
        time.sleep(2)
        self.switch_to_window(self.window_handles[-1])
        time.sleep(5)
        self.find_element_by_css_selector("a[class=\"left button-favor\"]").click()
        time.sleep(5)
        self.find_element_by_link_text(u"我的收藏").click()
        time.sleep(5)
        inputs=self.find_elements_by_tag_name('input')
        n=0
        for ii in inputs:
            if ii.get_attribute('type')=="checkbox":
                n=n+1
        n=n-3
        print u"当前列表文件为%d" %n
        if n > 0:
            print "收藏商品成功!"
        elif n==0:
            raise NameError('收藏商品失败!')
            #勾选全选输入框,点击“删除”选项
        self.find_element_by_id("checkpro").click()
        self.find_element_by_id("removebut").click()
        alert = self.switch_to_alert()
        alert.accept()
        #判断商品收藏商品是否成功
        inputs=self.find_elements_by_tag_name('input')
        n=0
        for ii in inputs:
            if ii.get_attribute('type')=="checkbox":
                n=n+1
        n=n-3
        print u"当前列表文件为%d" %n
        if n == 0:
        #空列表,收藏商品列表页有3个复选框
            print "删除收藏商品成功!"
        elif n>0:
            raise NameError('收藏商品失败!')
        time.sleep(5)
        logout.logout(self=self)
        time.sleep(2)
        self.quit()
def tearDown(self):
        self.driver.quit()
        self.assertEqual([], self.verificationErrors)
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2015-2-3 10:48:39 | 只看该作者
# -*- coding: utf-8 -*-
from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
import unittest, time, re
from threading import Thread
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import Select
from selenium.common.exceptions import NoSuchElementException
from selenium.common.exceptions import NoAlertPresentException
from selenium.webdriver.support.ui import WebDriverWait # available since 2.4.0
from selenium.webdriver.support import expected_conditions as EC # available since 2.26.0
import unittest, time, re,random
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
sys.path.append("\public")
from public import config
from public import login
from public import logout

#登陆模块(函数)
class Test_Collect(unittest.TestCase):
    def setUp(self):
        print 111

    def test_Collect(self):
        #通过host,browser 来参数化脚本
        #driver=self.driver
        self.maximize_window()
        self.delete_all_cookies()
        u"""商品详情中收藏商品、收藏夹中删除收藏商品 'browser'"""
        self.get("http://www.xxxx.com")
        self.implicitly_wait(5)
        while config.isElementExsit(driver,"a[class=\"close\"]") :
            self.find_element_by_css_selector("a[class=\"close\"]").click()
        login.login(self=driver)
        self.implicitly_wait(2)
        self.find_element_by_link_text(u"BOYS男装").click()
        time.sleep(2)
        self.find_element_by_xpath(u"(//a[contains(text(),'卫衣')])[2]").click()
        time.sleep(10)
        self.switch_to_window(self.window_handles[-1])
        self.maximize_window()
        time.sleep(5)
        #下拉滚动条的js
        js="var q=document.documentElement.scrollTop=5000"
        driver.execute_script(js)
        #获取商品数,将其加入到goods数组中,然后随机取其中一个商品
        #driver.find_element_by_xpath("/html/body/div[2]/div[2]/div[2]/div[4]/div/div['t']/div[1]/a").click()
        lt=len(self.find_elements_by_css_selector(".name>a"))
        rd=random.randint(1, lt)
        print rd
        time.sleep(5)
        self.find_elements_by_css_selector(".name>a")[rd].click()
        time.sleep(2)
        self.switch_to_window(self.window_handles[-1])
        time.sleep(5)
        self.find_element_by_css_selector("a[class=\"left button-favor\"]").click()
        time.sleep(5)
        self.find_element_by_link_text(u"我的收藏").click()
        time.sleep(5)
        inputs=self.find_elements_by_tag_name('input')
        n=0
        for ii in inputs:
            if ii.get_attribute('type')=="checkbox":
                n=n+1
        n=n-3
        print u"当前列表文件为%d" %n
        if n > 0:
            print "收藏商品成功!"
        elif n==0:
            raise NameError('收藏商品失败!')
            #勾选全选输入框,点击“删除”选项
        self.find_element_by_id("checkpro").click()
        self.find_element_by_id("removebut").click()
        alert = self.switch_to_alert()
        alert.accept()
        #判断商品收藏商品是否成功
        inputs=self.find_elements_by_tag_name('input')
        n=0
        for ii in inputs:
            if ii.get_attribute('type')=="checkbox":
                n=n+1
        n=n-3
        print u"当前列表文件为%d" %n
        if n == 0:
        #空列表,收藏商品列表页有3个复选框
            print "删除收藏商品成功!"
        elif n>0:
            raise NameError('收藏商品失败!')
        time.sleep(5)
        logout.logout(self=self)
        time.sleep(2)
        self.quit()
def tearDown(self):
        self.driver.quit()
        self.assertEqual([], self.verificationErrors)
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2015-11-11 16:06:39 | 只看该作者
testunit=unittest.TestSuite()
    print 222
    #discover 方法筛选出来的用例,循环添加到测试套件中
    discover=unittest.defaultTestLoader.discover(listaa,pattern ='*Collect3.py',top_level_dir=None)
    print 333
    for test_suite in discover:
        print 4444
        for test_case in test_suite:
            print 555
            testunit.addTests(test_case)
            print testunit
    return testunit
我也是写了一个类似的循环,但是很奇怪,在suite增加了case后,运行这段代码,并没有把新增加的case添加到循环里面? 这是为什么呢,大神们,求解释。。。。
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2016-5-26 15:29:10 | 只看该作者
为什么是怎么把driver传入到测试用例的
回复 支持 反对

使用道具 举报

  • TA的每日心情
    慵懒
    2017-11-7 16:44
  • 签到天数: 290 天

    连续签到: 1 天

    [LV.8]测试军长

    6#
    发表于 2016-5-27 08:52:05 | 只看该作者
    看运行结果打印结果,循环那一块根本就没有进行循环啊,是不是这一块写错了。
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-27 07:50 , Processed in 0.072046 second(s), 22 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表